mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
nir/opt_dead_cf: fixup for new foreach_block()
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
ddc6639f85
commit
52affdd2e6
1 changed files with 21 additions and 22 deletions
|
|
@ -135,33 +135,33 @@ opt_constant_if(nir_if *if_stmt, bool condition)
|
|||
}
|
||||
|
||||
static bool
|
||||
block_has_no_side_effects(nir_block *block, void *state)
|
||||
cf_node_has_side_effects(nir_cf_node *node)
|
||||
{
|
||||
(void) state;
|
||||
nir_foreach_block_in_cf_node(block, node) {
|
||||
nir_foreach_instr(block, instr) {
|
||||
if (instr->type == nir_instr_type_call)
|
||||
return true;
|
||||
|
||||
nir_foreach_instr(block, instr) {
|
||||
if (instr->type == nir_instr_type_call)
|
||||
return false;
|
||||
/* Return instructions can cause us to skip over other side-effecting
|
||||
* instructions after the loop, so consider them to have side effects
|
||||
* here.
|
||||
*/
|
||||
|
||||
/* Return instructions can cause us to skip over other side-effecting
|
||||
* instructions after the loop, so consider them to have side effects
|
||||
* here.
|
||||
*/
|
||||
if (instr->type == nir_instr_type_jump &&
|
||||
nir_instr_as_jump(instr)->type == nir_jump_return)
|
||||
return true;
|
||||
|
||||
if (instr->type == nir_instr_type_jump &&
|
||||
nir_instr_as_jump(instr)->type == nir_jump_return)
|
||||
return false;
|
||||
if (instr->type != nir_instr_type_intrinsic)
|
||||
continue;
|
||||
|
||||
if (instr->type != nir_instr_type_intrinsic)
|
||||
continue;
|
||||
|
||||
nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
|
||||
if (!nir_intrinsic_infos[intrin->intrinsic].flags &
|
||||
NIR_INTRINSIC_CAN_ELIMINATE)
|
||||
return false;
|
||||
nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
|
||||
if (!nir_intrinsic_infos[intrin->intrinsic].flags &
|
||||
NIR_INTRINSIC_CAN_ELIMINATE)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static bool
|
||||
|
|
@ -199,8 +199,7 @@ loop_is_dead(nir_loop *loop)
|
|||
nir_block_first_instr(after)->type == nir_instr_type_phi)
|
||||
return false;
|
||||
|
||||
if (!nir_foreach_block_in_cf_node_call(&loop->cf_node, block_has_no_side_effects,
|
||||
NULL))
|
||||
if (cf_node_has_side_effects(&loop->cf_node))
|
||||
return false;
|
||||
|
||||
nir_function_impl *impl = nir_cf_node_get_function(&loop->cf_node);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue