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 --- amd64/emit.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'amd64/emit.c') diff --git a/amd64/emit.c b/amd64/emit.c index 1f6e2b4..4f1a448 100644 --- a/amd64/emit.c +++ b/amd64/emit.c @@ -33,7 +33,7 @@ ref2oper(union ref r) case RICON: return mkoper(OIMM, .imm = r.i); case RXCON: if (conht[r.i].cls == KI4) - return mkoper(OIMM, .imm = conht[r.i].i4); + return mkoper(OIMM, .imm = conht[r.i].i); else if (conht[r.i].deref || conht[r.i].issym) return mkoper(OCONR, .con = r.i); assert(0); @@ -67,8 +67,8 @@ mkregoper(union ref r) static inline struct oper mkimmoper(union ref r) { - assert(r.t == RICON || (r.t == RXCON && conht[r.i].cls == KI4)); - return mkoper(OIMM, .imm = r.t == RICON ? r.i : conht[r.i].i4); + assert(iscon(r) && concls(r) == KI4); + return mkoper(OIMM, .imm = intconval(r)); } #define ismemref(ref) ((ref).t == RTMP && ioper[(ref).i].t == OMEM) @@ -77,7 +77,7 @@ mkimmoper(union ref r) static inline struct oper mkimmregoper(union ref r) { - assert(isregref(r) || r.t == RICON || (r.t == RXCON && conht[r.i].cls == KI4)); + assert(isregref(r) || (iscon(r) && concls(r) == KI4)); return ref2oper(r); } -- cgit v1.2.3