diff options
| author | 2023-06-19 09:50:20 +0200 | |
|---|---|---|
| committer | 2023-06-19 09:50:20 +0200 | |
| commit | d1cdebc88ea1a83e580299683ed27e6ca5d26683 (patch) | |
| tree | 43641a5d6a54192d4b66ce5da4d06518b99102e2 /amd64/emit.c | |
| parent | 43abf782b12e883fdf3b15402b7fa09546acb9af (diff) | |
fix isel & emit for sym constants
Diffstat (limited to 'amd64/emit.c')
| -rw-r--r-- | amd64/emit.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/amd64/emit.c b/amd64/emit.c index 670fcef..8b74632 100644 --- a/amd64/emit.c +++ b/amd64/emit.c @@ -35,7 +35,7 @@ ref2oper(union ref r) case RXCON: if (conht[r.i].cls == KI4) return mkoper(OIMM, .imm = conht[r.i].i); - else if (conht[r.i].deref || conht[r.i].issym) + else if (!conht[r.i].cls) return mkoper(OCONR, .con = r.i); assert(0); case RMORE: return mkmemoper(r); @@ -123,6 +123,9 @@ mkmemoper(union ref r) .index = addr->index.t ? mkregoper(addr->index).reg : NOINDEX, .disp = addr->disp, .shift = addr->shift); + } else if (r.t == RXCON) { + assert(!conht[r.i].cls); + return mkoper(OCONR, .con = r.i); } else { return mkoper(OMEM, .base = isregref(r) ? ref2oper(r).reg : NOBASE, .index = NOINDEX, |