| author | |
| committer | |
| log | aa7cbca7d37bb2cd7794ffa401193cdc3f5f9849 |
| tree | 35ba6d6b69a3df9f661ba64202f31e0d8b1b6e5f |
| parent | 69bd2c243e23fa2d4df2ec50802bd4b453211bfd |
3 files changed, 12 insertions(+), 2 deletions(-)
src/Sema.zig+2| ... | ... | @@ -9494,6 +9494,8 @@ fn analyzePtrArithmetic( |
| 9494 | 9494 | } |
| 9495 | 9495 | |
| 9496 | 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 | 9499 | if (ptr_val.getUnsignedInt()) |addr| { |
| 9498 | 9500 | const target = sema.mod.getTarget(); |
| 9499 | 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 | 747 | } |
| 748 | 748 | |
| 749 | 749 | test "pointer to thread local array" { |
| 750 | if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO | |
| 750 | 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 | |
| 751 | 755 | |
| 752 | 756 | const s = "Hello world"; |
| 753 | 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 | 391 | } |
| 392 | 392 | |
| 393 | 393 | test "indexing array with sentinel returns correct type" { |
| 394 | if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO | |
| 394 | 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 | |
| 395 | 399 | |
| 396 | 400 | var s: [:0]const u8 = "abc"; |
| 397 | 401 | try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0]))); |