nir/lower_reg: Remove dead reg_decl intrinsics

For any reg we can lower, we remove it whenever we remove the last read
or write.  For regs that aren't used at all, however, there are no reads
or writes so there's nothing to trigger the removal.  Instead, we need
to do it in setup_reg.

Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28300>
This commit is contained in:
Faith Ekstrand 2024-03-19 08:28:55 -05:00 committed by Marge Bot
parent 7576212c2c
commit bef0601d51

View file

@ -36,6 +36,11 @@ struct regs_to_ssa_state {
static void
setup_reg(nir_intrinsic_instr *decl, struct regs_to_ssa_state *state)
{
if (nir_def_is_unused(&decl->def)) {
nir_instr_remove(&decl->instr);
return;
}
assert(state->values[decl->def.index] == NULL);
if (!should_lower_reg(decl))
return;