From 97c6d5c44f30b29b52d1dc431ab9f2df4bb47fd2 Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 31 Dec 2025 11:13:15 +0100 Subject: backend: separate instrs for integer/float store --- c/c.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'c') 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; -- cgit v1.2.3