diff options
| author | Quentin Carbonneaux <[email protected]> | 2022-11-22 21:44:44 +0100 |
|---|---|---|
| committer | Quentin Carbonneaux <[email protected]> | 2022-11-22 21:56:21 +0100 |
| commit | cbee74bdb4f85d6d8d4f192f0018ea023418e216 (patch) | |
| tree | 4ea3eb41265e44336d81fecf719193c67540f3d3 /amd64/emit.c | |
| parent | 04e26409011389f7b5759114905195a4fb0b0286 (diff) | |
use a new struct for symbols
Symbols are a useful abstraction
that occurs in both Con and Alias.
In this patch they get their own
struct. This new struct packages
a symbol name and a type; the type
tells us where the symbol name
must be interpreted (currently, in
gobal memory or in thread-local
storage).
The refactor fixed a bug in
addcon(), proving the value of
packaging symbol names with their
type.
Diffstat (limited to 'amd64/emit.c')
| -rw-r--r-- | amd64/emit.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/amd64/emit.c b/amd64/emit.c index 37dd1e9..a034a66 100644 --- a/amd64/emit.c +++ b/amd64/emit.c @@ -165,9 +165,9 @@ emitcon(Con *con, FILE *f) switch (con->type) { case CAddr: - l = str(con->label); + l = str(con->sym.id); p = l[0] == '"' ? "" : T.assym; - if (con->reloc == RelThr) { + if (con->sym.type == SThr) { if (T.apple) fprintf(f, "%s%s@TLVP", p, l); else @@ -344,7 +344,7 @@ Next: off = fn->con[ref.val]; emitcon(&off, f); if (off.type == CAddr) - if (off.reloc != RelThr || T.apple) + if (off.sym.type != SThr || T.apple) fprintf(f, "(%%rip)"); break; case RTmp: |
