diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-03-10 15:32:10 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-03-10 17:52:18 -0700 |
| commit | b642fa24a67f88082b768d39e443b03c7446be76 (patch) | |
| tree | 9f63c66c0f70cf297e08a5dd383b23989b00e8a6 | |
| parent | b0dc61fae26ab37c41300a8e817cef45992669bb (diff) | |
| download | zig-b642fa24a67f88082b768d39e443b03c7446be76.tar.gz zig-b642fa24a67f88082b768d39e443b03c7446be76.zip | |
stage2: implement integer pointer constants
| -rw-r--r-- | src/codegen.zig | 14 | ||||
| -rw-r--r-- | test/behavior/basic.zig | 2 | ||||
| -rw-r--r-- | test/behavior/bugs/7250.zig | 7 |
3 files changed, 17 insertions, 6 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index 20b2968c48..e33cacc787 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -303,6 +303,20 @@ pub fn generateSymbol( }, }, .Pointer => switch (typed_value.val.tag()) { + .zero, .one, .int_u64, .int_big_positive => { + switch (target.cpu.arch.ptrBitWidth()) { + 32 => { + const x = typed_value.val.toUnsignedInt(); + mem.writeInt(u32, try code.addManyAsArray(4), @intCast(u32, x), endian); + }, + 64 => { + const x = typed_value.val.toUnsignedInt(); + mem.writeInt(u64, try code.addManyAsArray(8), x, endian); + }, + else => unreachable, + } + return Result{ .appended = {} }; + }, .variable => { const decl = typed_value.val.castTag(.variable).?.data.owner_decl; return lowerDeclRef(bin_file, src_loc, typed_value, decl, code, debug_output, reloc_info); diff --git a/test/behavior/basic.zig b/test/behavior/basic.zig index 481a15bbe5..f925ddede3 100644 --- a/test/behavior/basic.zig +++ b/test/behavior/basic.zig @@ -719,7 +719,7 @@ test "string concatenation" { } test "thread local variable" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO const S = struct { threadlocal var t: i32 = 1234; diff --git a/test/behavior/bugs/7250.zig b/test/behavior/bugs/7250.zig index ea05cf70e3..898672133a 100644 --- a/test/behavior/bugs/7250.zig +++ b/test/behavior/bugs/7250.zig @@ -14,10 +14,7 @@ threadlocal var g_uart0 = nrfx_uart_t{ }; test "reference a global threadlocal variable" { - if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + _ = nrfx_uart_rx(&g_uart0); } |
