aboutsummaryrefslogtreecommitdiff
path: root/src/link/Elf.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-05-15 21:00:15 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-05-15 21:00:15 -0700
commitdc036f5b6fde67c4a74701c75c5947a956abaec1 (patch)
tree149d62133f77763a194685b5793f764619707df7 /src/link/Elf.zig
parent5769ed2d4428305e4478cf4e425f5df2469a7ffd (diff)
downloadzig-dc036f5b6fde67c4a74701c75c5947a956abaec1.tar.gz
zig-dc036f5b6fde67c4a74701c75c5947a956abaec1.zip
codegen: implement const value rendering for ints <= 64 bits
Diffstat (limited to 'src/link/Elf.zig')
-rw-r--r--src/link/Elf.zig9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index 83b35cf12c..e88bb036f2 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -2196,6 +2196,12 @@ pub fn updateDecl(self: *Elf, module: *Module, decl: *Module.Decl) !void {
if (decl.val.tag() == .extern_fn) {
return; // TODO Should we do more when front-end analyzed extern decl?
}
+ if (decl.val.castTag(.variable)) |payload| {
+ const variable = payload.data;
+ if (variable.is_extern) {
+ return; // TODO Should we do more when front-end analyzed extern decl?
+ }
+ }
var code_buffer = std.ArrayList(u8).init(self.base.allocator);
defer code_buffer.deinit();
@@ -2287,9 +2293,10 @@ pub fn updateDecl(self: *Elf, module: *Module, decl: *Module.Decl) !void {
} else {
// TODO implement .debug_info for global variables
}
+ const decl_val = if (decl.val.castTag(.variable)) |payload| payload.data.init else decl.val;
const res = try codegen.generateSymbol(&self.base, decl.srcLoc(), .{
.ty = decl.ty,
- .val = decl.val,
+ .val = decl_val,
}, &code_buffer, .{
.dwarf = .{
.dbg_line = &dbg_line_buffer,