aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2023-07-07 09:08:38 +0200
committerlemon <lsof@mailbox.org>2023-07-07 09:08:38 +0200
commit40f1c14f7594f6e979316ad8f6bfff51341ad33d (patch)
treece56eef826eb3fc8d13030ebf145544d930d9277
parentcc426d72bf14199050a8eb6f357b2d98d67e321f (diff)
regalloc: update preds during simplify pass
-rw-r--r--regalloc.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/regalloc.c b/regalloc.c
index 096ad87..25dce98 100644
--- a/regalloc.c
+++ b/regalloc.c
@@ -762,7 +762,13 @@ regalloc(struct function *fn)
if (p->s1 == blk) p->s1 = next;
else if (p->s2 == blk) p->s2 = next;
else continue;
- goto DelBlk;
+ for (int i = 0; i < next->npred; ++i) {
+ if (blkpred(next, i) == blk) {
+ blkpred(next, i) = p;
+ goto DelBlk;
+ }
+ }
+ assert(0);
}
}
} while ((blk = blk->lnext) != fn->entry);