aboutsummaryrefslogtreecommitdiffhomepage
path: root/ir/regalloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'ir/regalloc.c')
-rw-r--r--ir/regalloc.c4
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;