authorgravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-03-03 19:28:37+02:00
committergravatar for git@vexu.euVeikka Tuominen <git@vexu.eu> 2022-03-03 22:42:34+02:00
logaa7cbca7d37bb2cd7794ffa401193cdc3f5f9849
tree35ba6d6b69a3df9f661ba64202f31e0d8b1b6e5f
parent69bd2c243e23fa2d4df2ec50802bd4b453211bfd

stage2: make analyzePtrArithmetic no-op with offset=0


3 files changed, 12 insertions(+), 2 deletions(-)

src/Sema.zig+2
...@@ -9494,6 +9494,8 @@ fn analyzePtrArithmetic(...@@ -9494,6 +9494,8 @@ fn analyzePtrArithmetic(
9494 }9494 }
94959495
9496 const offset_int = try sema.usizeCast(block, offset_src, offset_val.toUnsignedInt());9496 const offset_int = try sema.usizeCast(block, offset_src, offset_val.toUnsignedInt());
9497 // TODO I tried to put this check earlier but it the LLVM backend generate invalid instructinons
9498 if (offset_int == 0) return ptr;
9497 if (ptr_val.getUnsignedInt()) |addr| {9499 if (ptr_val.getUnsignedInt()) |addr| {
9498 const target = sema.mod.getTarget();9500 const target = sema.mod.getTarget();
9499 const ptr_child_ty = ptr_ty.childType();9501 const ptr_child_ty = ptr_ty.childType();
test/behavior/basic.zig+5-1
...@@ -747,7 +747,11 @@ fn maybe(x: bool) anyerror!?u32 {...@@ -747,7 +747,11 @@ fn maybe(x: bool) anyerror!?u32 {
747}747}
748748
749test "pointer to thread local array" {749test "pointer to thread local array" {
750 if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO750 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
751 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
752 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
753 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
754 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
751755
752 const s = "Hello world";756 const s = "Hello world";
753 std.mem.copy(u8, buffer[0..], s);757 std.mem.copy(u8, buffer[0..], s);
test/behavior/pointers.zig+5-1
...@@ -391,7 +391,11 @@ test "@ptrToInt on null optional at comptime" {...@@ -391,7 +391,11 @@ test "@ptrToInt on null optional at comptime" {
391}391}
392392
393test "indexing array with sentinel returns correct type" {393test "indexing array with sentinel returns correct type" {
394 if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO394 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
395 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
396 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
397 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
398 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
395399
396 var s: [:0]const u8 = "abc";400 var s: [:0]const u8 = "abc";
397 try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));401 try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));