aboutsummaryrefslogtreecommitdiffhomepage
path: root/ir
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2025-10-22 09:56:49 +0200
committerlemon <lsof@mailbox.org>2025-10-22 09:56:49 +0200
commit031f539c86f168ee8d0d1b0dd34572863cc17282 (patch)
tree6362701adf77be17b1639fc5085fde4dd82a8ae9 /ir
parentf5714c5c553e9816eef4cfddef128ba2706fb118 (diff)
always keep volatile loads
Diffstat (limited to 'ir')
-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;