mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-21 18:30:42 +02:00
broadcom/vc5: Re-do live variables after removing thrsws.
Otherwise our start/ends ips won't line up with the actual instructions.
This commit is contained in:
parent
c3a504f470
commit
55bf298333
2 changed files with 14 additions and 3 deletions
|
|
@ -1929,6 +1929,7 @@ vir_remove_thrsw(struct v3d_compile *c)
|
|||
vir_remove_instruction(c, inst);
|
||||
}
|
||||
}
|
||||
vir_calculate_live_intervals(c);
|
||||
|
||||
c->last_thrsw = NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -311,10 +311,20 @@ vir_calculate_live_intervals(struct v3d_compile *c)
|
|||
{
|
||||
int bitset_words = BITSET_WORDS(c->num_temps);
|
||||
|
||||
/* If we called this function more than once, then we should be
|
||||
* freeing the previous arrays.
|
||||
/* We may be called more than once if we've rearranged the program to
|
||||
* try to get register allocation to succeed.
|
||||
*/
|
||||
assert(!c->temp_start);
|
||||
if (c->temp_start) {
|
||||
ralloc_free(c->temp_start);
|
||||
ralloc_free(c->temp_end);
|
||||
|
||||
vir_for_each_block(block, c) {
|
||||
ralloc_free(block->def);
|
||||
ralloc_free(block->use);
|
||||
ralloc_free(block->live_in);
|
||||
ralloc_free(block->live_out);
|
||||
}
|
||||
}
|
||||
|
||||
c->temp_start = rzalloc_array(c, int, c->num_temps);
|
||||
c->temp_end = rzalloc_array(c, int, c->num_temps);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue