From 13471741b538baa45cd53a521cf7d52087f3200f Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 5 Nov 2025 13:56:54 +0100 Subject: amd64: fix aggregate abi stuff;; ir: fold, peephole optimizing constructors --- ir/optmem.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'ir/optmem.c') diff --git a/ir/optmem.c b/ir/optmem.c index 471f11c..9b71c8d 100644 --- a/ir/optmem.c +++ b/ir/optmem.c @@ -246,6 +246,20 @@ mem2reg(struct function *fn) k, mkref(RREG, mctarg->bpr)); } else { adduse(use->blk, use->u, val); + if (isintcon(val) && ext != Ocopy) { + vlong x = intconval(val); + switch (ext) { + case Oexts1: x = (schar)x; break; + case Oextu1: x = (uchar)x; break; + case Oexts2: x = (short)x; break; + case Oextu2: x = (ushort)x; break; + case Oexts4: x = (int)x; break; + case Oextu4: x = (uint)x; break; + default: assert(0); + } + val = mkintcon(k, x); + ext = Ocopy; + } *m = mkinstr(ext, k, val); } } -- cgit v1.2.3