zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit aa7cbca7d37bb2cd7794ffa401193cdc3f5f9849 (tree)
parent 69bd2c243e23fa2d4df2ec50802bd4b453211bfd
Author: Veikka Tuominen <git@vexu.eu>
Date:   Thu,  3 Mar 2022 19:28:37 +0200

stage2: make analyzePtrArithmetic no-op with offset=0

Diffstat:
Msrc/Sema.zig | 2++
Mtest/behavior/basic.zig | 6+++++-
Mtest/behavior/pointers.zig | 6+++++-
3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/Sema.zig b/src/Sema.zig @@ -9494,6 +9494,8 @@ fn analyzePtrArithmetic( } const offset_int = try sema.usizeCast(block, offset_src, offset_val.toUnsignedInt()); + // TODO I tried to put this check earlier but it the LLVM backend generate invalid instructinons + if (offset_int == 0) return ptr; if (ptr_val.getUnsignedInt()) |addr| { const target = sema.mod.getTarget(); const ptr_child_ty = ptr_ty.childType(); diff --git a/test/behavior/basic.zig b/test/behavior/basic.zig @@ -747,7 +747,11 @@ fn maybe(x: bool) anyerror!?u32 { } test "pointer to thread local array" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO const s = "Hello world"; std.mem.copy(u8, buffer[0..], s); diff --git a/test/behavior/pointers.zig b/test/behavior/pointers.zig @@ -391,7 +391,11 @@ test "@ptrToInt on null optional at comptime" { } test "indexing array with sentinel returns correct type" { - if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO var s: [:0]const u8 = "abc"; try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));