Commit aa7cbca7d3

Veikka Tuominen <git@vexu.eu>
2022-03-03 18:28:37
stage2: make analyzePtrArithmetic no-op with offset=0
1 parent 69bd2c2
Changed files (3)
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();
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);
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])));