mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
stage2: make analyzePtrArithmetic no-op with offset=0
This commit is contained in:
parent
69bd2c243e
commit
aa7cbca7d3
@ -9494,6 +9494,8 @@ fn analyzePtrArithmetic(
|
|||||||
}
|
}
|
||||||
|
|
||||||
const offset_int = try sema.usizeCast(block, offset_src, offset_val.toUnsignedInt());
|
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| {
|
if (ptr_val.getUnsignedInt()) |addr| {
|
||||||
const target = sema.mod.getTarget();
|
const target = sema.mod.getTarget();
|
||||||
const ptr_child_ty = ptr_ty.childType();
|
const ptr_child_ty = ptr_ty.childType();
|
||||||
|
|||||||
@ -747,7 +747,11 @@ fn maybe(x: bool) anyerror!?u32 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
test "pointer to thread local array" {
|
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";
|
const s = "Hello world";
|
||||||
std.mem.copy(u8, buffer[0..], s);
|
std.mem.copy(u8, buffer[0..], s);
|
||||||
|
|||||||
@ -391,7 +391,11 @@ test "@ptrToInt on null optional at comptime" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
test "indexing array with sentinel returns correct type" {
|
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";
|
var s: [:0]const u8 = "abc";
|
||||||
try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));
|
try testing.expectEqualSlices(u8, "*const u8", @typeName(@TypeOf(&s[0])));
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user