diff --git a/src/amd/compiler/aco_optimizer_postRA.cpp b/src/amd/compiler/aco_optimizer_postRA.cpp index 54197535840..e250837dee9 100644 --- a/src/amd/compiler/aco_optimizer_postRA.cpp +++ b/src/amd/compiler/aco_optimizer_postRA.cpp @@ -523,6 +523,7 @@ try_eliminate_scc_copy(pr_opt_ctx& ctx, aco_ptr& instr) } /* Duplicate the original producer of the SCC */ + Definition scc_def = instr->definitions[0]; instr.reset(create_instruction(producer_instr->opcode, producer_instr->format, producer_instr->operands.size(), producer_instr->definitions.size())); @@ -545,6 +546,7 @@ try_eliminate_scc_copy(pr_opt_ctx& ctx, aco_ptr& instr) for (unsigned i = 0; i < producer_instr->definitions.size(); ++i) instr->definitions[i] = Definition(producer_instr->definitions[i].physReg(), producer_instr->definitions[i].regClass()); + instr->definitions.back() = scc_def; /* Keep temporary ID. */ } void