diff --git a/.pick_status.json b/.pick_status.json index 874a33c09c1..09e28145b86 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -984,7 +984,7 @@ "description": "aco/post-ra: assume scc is going to be overwritten by phis at end of blocks", "nominated": true, "nomination_type": 0, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": null, "notes": null diff --git a/src/amd/compiler/aco_optimizer_postRA.cpp b/src/amd/compiler/aco_optimizer_postRA.cpp index 5ae59dad2ce..e56c36e0cce 100644 --- a/src/amd/compiler/aco_optimizer_postRA.cpp +++ b/src/amd/compiler/aco_optimizer_postRA.cpp @@ -748,6 +748,12 @@ optimize_postRA(Program* program) for (aco_ptr& instr : block.instructions) process_instruction(ctx, instr); + + /* SCC might get overwritten by copies or swaps from parallelcopies + * inserted by SSA-elimination for linear phis. + */ + if (!block.scc_live_out) + ctx.instr_idx_by_regs[block.index][scc] = overwritten_unknown_instr; } /* Cleanup pass