diff options
Diffstat (limited to 'ir')
| -rw-r--r-- | ir/regalloc.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/ir/regalloc.c b/ir/regalloc.c index b9f5517..0dcb11c 100644 --- a/ir/regalloc.c +++ b/ir/regalloc.c @@ -1048,6 +1048,10 @@ devirt(struct rega *ra, struct block *blk) insertinstr(blk, curi++, mkmove(ins->cls, ins->reg-1, ins->l.i)); ins->l.i = ins->reg-1; } + if (!ins->reg && in_range(ins->op, Oloads1, Oloadf8)) { + assert(ins->keep); + ins->reg = kisint(ins->cls) ? mctarg->gprscratch+1 : mctarg->fprscratch+1; + } } return allnops; |