aboutsummaryrefslogtreecommitdiffhomepage
path: root/ir/regalloc.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2025-10-23 19:30:45 +0200
committerlemon <lsof@mailbox.org>2025-10-23 19:30:51 +0200
commit4fc6339f04958150c538bf97bf721f58e0084ffb (patch)
treef66fe5203552287f0386c6459d1f0a4bce4bf22f /ir/regalloc.c
parented989e2a0855e175442b0f5e73bb3fa4833efecd (diff)
ir bugfixes
Diffstat (limited to 'ir/regalloc.c')
-rw-r--r--ir/regalloc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ir/regalloc.c b/ir/regalloc.c
index f73a3d1..ca84eb7 100644
--- a/ir/regalloc.c
+++ b/ir/regalloc.c
@@ -1031,12 +1031,12 @@ devirt(struct rega *ra, struct block *blk)
} else {
bool dosave = 0;
int reg = kisint(insrescls(*ins)) ? mctarg->gprscratch : mctarg->fprscratch;
- assert(nspill < 2);
if (nspill > 0) {
for (reg = kisflt(cls) ? mctarg->fpr0 : mctarg->gpr0;; ++reg) {
for (int j = 0; j < nargref; ++j)
- if (argref[j]->t == RREG && argref[j]->i == reg) continue;
+ if (argref[j]->t == RREG && argref[j]->i == reg) goto NotThis;
break;
+ NotThis:;
}
/* if not the designated scratch register, we need to save+restore */
if ((dosave = rstest(fn->regusage, reg) || rstest(mctarg->rcallee, reg))) {