diff options
| author | 2025-10-22 09:56:49 +0200 | |
|---|---|---|
| committer | 2025-10-22 09:56:49 +0200 | |
| commit | 031f539c86f168ee8d0d1b0dd34572863cc17282 (patch) | |
| tree | 6362701adf77be17b1639fc5085fde4dd82a8ae9 /ir/regalloc.c | |
| parent | f5714c5c553e9816eef4cfddef128ba2706fb118 (diff) | |
always keep volatile loads
Diffstat (limited to 'ir/regalloc.c')
| -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; |