diff --git a/.pick_status.json b/.pick_status.json index f56a5e42354..d3b85bd81c0 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -3775,7 +3775,7 @@ "description": "aco: fix reset_block_regs() in postRA-optimizer", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "75967a4814be7988afc20e59bac4b48bafacab00" }, diff --git a/src/amd/compiler/aco_optimizer_postRA.cpp b/src/amd/compiler/aco_optimizer_postRA.cpp index 8ced375dd63..59c0d12548d 100644 --- a/src/amd/compiler/aco_optimizer_postRA.cpp +++ b/src/amd/compiler/aco_optimizer_postRA.cpp @@ -89,13 +89,14 @@ struct pr_opt_ctx { /* Mark overwritten if it doesn't match with other predecessors. */ const unsigned until_reg = min_reg + num_regs; - for (unsigned pred = 1; pred < num_preds; ++pred) { - for (unsigned i = min_reg; i < until_reg; ++i) { - Idx& idx = instr_idx_by_regs[block_index][i]; + for (unsigned i = 1; i < num_preds; ++i) { + unsigned pred = preds[i]; + for (unsigned reg = min_reg; reg < until_reg; ++reg) { + Idx& idx = instr_idx_by_regs[block_index][reg]; if (idx == overwritten_untrackable) continue; - if (idx != instr_idx_by_regs[pred][i]) + if (idx != instr_idx_by_regs[pred][reg]) idx = overwritten_untrackable; } }