From 8d8cf6584bf4081b54cd91fcaa42578cbd794440 Mon Sep 17 00:00:00 2001 From: lemon Date: Wed, 14 Jun 2023 09:58:50 +0200 Subject: simpler handling of large constants in IR --- c.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'c.c') diff --git a/c.c b/c.c index 022ef8a..fed56c3 100644 --- a/c.c +++ b/c.c @@ -1125,7 +1125,8 @@ cvt(struct function *fn, enum typetag to, enum typetag from, union ref ref) } else if (kfrom == KI4 && issignedt(from)) ins.op = Oexts4; else if (kfrom == KI4) ins.op = Oextu4; - else if (ref.t == RXCON && kfrom == KI8) return mkintcon(KI4, (int)(conht[ref.i].i8)); + else if (kto == KI4 && isintcon(ref)) + return issignedt(to) ? mkintcon(kto, (int)intconval(ref)) : mkintcon(kto, (uint)intconval(ref)); else ins.op = Ocopy; } return addinstr(fn, ins); -- cgit v1.2.3