diff --git a/src/compiler/nir/nir_instr_set.c b/src/compiler/nir/nir_instr_set.c index 032fcbcb918..985db65c0a1 100644 --- a/src/compiler/nir/nir_instr_set.c +++ b/src/compiler/nir/nir_instr_set.c @@ -707,6 +707,14 @@ nir_instrs_equal(const nir_instr *instr1, const nir_instr *instr2) if (phi1->instr.block != phi2->instr.block) return false; + /* In case of phis with no sources, the dest needs to be checked + * to ensure that phis with incompatible dests won't get merged + * during CSE. */ + if (phi1->dest.ssa.num_components != phi2->dest.ssa.num_components) + return false; + if (phi1->dest.ssa.bit_size != phi2->dest.ssa.bit_size) + return false; + nir_foreach_phi_src(src1, phi1) { nir_foreach_phi_src(src2, phi2) { if (src1->pred == src2->pred) {