mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 20:18:12 +02:00
nir/dead_cf: Remove dead control flow after infinite loops.
And after discard-only loops. Otherwise we end up with dead code which confuses nir_repair_ssa into adding a whole bunch of uses of undefined. However, for derefs, we sometimes always expect to get a variable instead of undefined. Fixes dEQP-VK.graphicsfuzz.write-red-in-loop-nest on radv. Fixes:c832820ce9"nir/dead_cf: Repair SSA if the pass makes progress" Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/1928 Reviewed-by: Connor Abbott <cwabbott0@gmail.com> (cherry picked from commit6da3bf2600)
This commit is contained in:
parent
8355658fa8
commit
b87edab8a2
1 changed files with 7 additions and 0 deletions
|
|
@ -334,6 +334,13 @@ dead_cf_list(struct exec_list *list, bool *list_ends_in_jump)
|
|||
bool dummy;
|
||||
progress |= dead_cf_list(&loop->body, &dummy);
|
||||
|
||||
nir_block *next = nir_cf_node_as_block(nir_cf_node_next(cur));
|
||||
if (next->predecessors->entries == 0 &&
|
||||
(!exec_list_is_empty(&next->instr_list) ||
|
||||
!exec_node_is_tail_sentinel(next->cf_node.node.next))) {
|
||||
remove_after_cf_node(cur);
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue