diff options
| author | 2025-10-23 19:30:45 +0200 | |
|---|---|---|
| committer | 2025-10-23 19:30:51 +0200 | |
| commit | 4fc6339f04958150c538bf97bf721f58e0084ffb (patch) | |
| tree | f66fe5203552287f0386c6459d1f0a4bce4bf22f /ir/regalloc.c | |
| parent | ed989e2a0855e175442b0f5e73bb3fa4833efecd (diff) | |
ir bugfixes
Diffstat (limited to 'ir/regalloc.c')
| -rw-r--r-- | ir/regalloc.c | 4 |
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))) { |