aboutsummaryrefslogtreecommitdiffhomepage
path: root/amd64/emit.c
diff options
context:
space:
mode:
Diffstat (limited to 'amd64/emit.c')
-rw-r--r--amd64/emit.c8
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);
}