aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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);