diff options
| author | 2023-06-14 09:58:50 +0200 | |
|---|---|---|
| committer | 2023-06-14 10:00:47 +0200 | |
| commit | 8d8cf6584bf4081b54cd91fcaa42578cbd794440 (patch) | |
| tree | fe9d36de11813a80e30fd71adce19ade0dd9d111 /amd64/emit.c | |
| parent | 023692751f66866dfc72c48d288f33875faa65f0 (diff) | |
simpler handling of large constants in IR
Diffstat (limited to 'amd64/emit.c')
| -rw-r--r-- | amd64/emit.c | 8 |
1 files changed, 4 insertions, 4 deletions
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); } |