- return true;
-}
-
-static bool
-repair_ssa_block(nir_block *block, void *state)
-{
- nir_foreach_instr_safe(block, instr) {
- nir_foreach_ssa_def(instr, repair_ssa_def, state);
+ nir_foreach_if_use_safe(src, def) {
+ nir_block *block_before_if =
+ nir_cf_node_as_block(nir_cf_node_prev(&src->parent_if->cf_node));
+ if (!nir_block_dominates(def->parent_instr->block, block_before_if)) {
+ nir_if_rewrite_condition(src->parent_if, nir_src_for_ssa(
+ nir_phi_builder_value_get_block_def(val, block_before_if)));
+ }