mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 07:28:11 +02:00
nir/opt_if: don't mark progress if nothing changes
if we have something like this:
loop {
...
if x {
break;
} else {
continue;
}
}
opt_if_loop_last_continue returns true marking progress allthough nothing
changes.
Fixes: 5921a19d4b "nir: add if opt opt_if_loop_last_continue()"
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
3c540e0a74
commit
7e08f22a72
1 changed files with 7 additions and 0 deletions
|
|
@ -844,6 +844,13 @@ opt_if_loop_last_continue(nir_loop *loop)
|
|||
if (!then_ends_in_continue && !else_ends_in_continue)
|
||||
return false;
|
||||
|
||||
/* if the block after the if/else is empty we bail, otherwise we might end
|
||||
* up looping forever
|
||||
*/
|
||||
if (&nif->cf_node == nir_cf_node_prev(&last_block->cf_node) &&
|
||||
exec_list_is_empty(&last_block->instr_list))
|
||||
return false;
|
||||
|
||||
/* Move the last block of the loop inside the last if-statement */
|
||||
nir_cf_list tmp;
|
||||
nir_cf_extract(&tmp, nir_after_cf_node(if_node),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue