aboutsummaryrefslogtreecommitdiffhomepage
path: root/c/c.c
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2025-12-31 11:13:15 +0100
committerlemon <lsof@mailbox.org>2025-12-31 11:13:15 +0100
commit97c6d5c44f30b29b52d1dc431ab9f2df4bb47fd2 (patch)
tree564615d402793491d545d612df31dd80451120ab /c/c.c
parent3a46902b3ede49116522992793d3ececef53c5a8 (diff)
backend: separate instrs for integer/float store
Diffstat (limited to 'c/c.c')
-rw-r--r--c/c.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/c/c.c b/c/c.c
index fffdccc..d3f97ec 100644
--- a/c/c.c
+++ b/c/c.c
@@ -2951,10 +2951,10 @@ genstore(struct function *fn, union type t, union ref ptr, union ref val)
assert(isscalar(t));
switch (typesize(t)) {
- case 1: ins.op = Ostore8; break;
- case 2: ins.op = Ostore16; break;
- case 4: ins.op = Ostore32; break;
- case 8: ins.op = Ostore64; break;
+ case 1: ins.op = Ostorei8; break;
+ case 2: ins.op = Ostorei16; break;
+ case 4: ins.op = isflt(t) ? Ostoref32 : Ostorei32; break;
+ case 8: ins.op = isflt(t) ? Ostoref64 : Ostorei64; break;
default: assert(0);
}
ins.l = ptr;
@@ -2988,7 +2988,7 @@ geninit(struct function *fn, union type t, union ref dst, const struct expr *src
/* write individual zeros at non initialized gaps */
for (uint i = 0; bsiter(&i, azero, countof(azero)) && i < siz; i += align) {
adr = irbinop(fn, Oadd, KPTR, dst, mkref(RICON, i));
- addinstr(fn, mkinstr(Ostore8 + ilog2(align), 0, .l = adr, .r = ZEROREF));
+ addinstr(fn, mkinstr(Ostorei8 + ilog2(align), 0, .l = adr, .r = ZEROREF));
}
} else {
goto Memset0;