nir/lower_shader_calls: Repair SSA after wrap_instrs
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

Wrapping jump instructions that are located inside ifs can break SSA
invariants because the else block no longer dominates the merge block.
Repair the SSA to make the validator happy again.

Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/37957>
This commit is contained in:
Natalie Vock 2025-10-20 15:07:05 +02:00 committed by Marge Bot
parent 8d37098deb
commit 50e65dac79

View file

@ -1228,8 +1228,16 @@ wrap_instr(nir_builder *b, nir_instr *instr, void *data)
static bool
wrap_instrs(nir_shader *shader, wrap_instr_callback callback)
{
return nir_shader_instructions_pass(shader, wrap_instr,
nir_metadata_none, callback);
bool progress = nir_shader_instructions_pass(shader, wrap_instr,
nir_metadata_none, callback);
/* Wrapping jump instructions that are located inside ifs can break SSA
* invariants because the else block no longer dominates the merge block.
* Repair the SSA to make the validator happy again.
*/
if (progress)
nir_repair_ssa(shader);
return progress;
}
static bool