Skip to content

Commit c334956

Browse files
jacobly0andrewrk
authored andcommitted
aarch64: workaround some optional/union issues
1 parent dea3ed7 commit c334956

File tree

14 files changed

+221
-150
lines changed

14 files changed

+221
-150
lines changed

lib/std/builtin.zig

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -895,8 +895,8 @@ pub const VaList = switch (builtin.cpu.arch) {
895895
.windows => *u8,
896896
.ios, .macos, .tvos, .watchos, .visionos => *u8,
897897
else => switch (builtin.zig_backend) {
898-
.stage2_aarch64 => VaListAarch64,
899-
else => @compileError("disabled due to miscompilations"),
898+
else => VaListAarch64,
899+
.stage2_llvm => @compileError("disabled due to miscompilations"),
900900
},
901901
},
902902
.arm, .armeb, .thumb, .thumbeb => switch (builtin.os.tag) {
@@ -921,7 +921,10 @@ pub const VaList = switch (builtin.cpu.arch) {
921921
.wasm32, .wasm64 => *anyopaque,
922922
.x86 => *u8,
923923
.x86_64 => switch (builtin.os.tag) {
924-
.windows => @compileError("disabled due to miscompilations"), // *u8,
924+
.windows => switch (builtin.zig_backend) {
925+
else => *u8,
926+
.stage2_llvm => @compileError("disabled due to miscompilations"),
927+
},
925928
else => VaListX86_64,
926929
},
927930
.xtensa => VaListXtensa,

lib/std/start.zig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -626,7 +626,6 @@ pub inline fn callMain() u8 {
626626

627627
const result = root.main() catch |err| {
628628
switch (builtin.zig_backend) {
629-
.stage2_aarch64,
630629
.stage2_powerpc,
631630
.stage2_riscv64,
632631
=> {

src/codegen/aarch64/Select.zig

Lines changed: 215 additions & 109 deletions
Large diffs are not rendered by default.

test/behavior/array.zig

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,6 @@ test "array literal as argument to function" {
395395
}
396396

397397
test "double nested array to const slice cast in array literal" {
398-
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
399398
if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
400399
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
401400
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
@@ -650,7 +649,6 @@ test "runtime initialized sentinel-terminated array literal" {
650649
}
651650

652651
test "array of array agregate init" {
653-
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
654652
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
655653
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
656654

test/behavior/defer.zig

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ test "mixing normal and error defers" {
107107
}
108108

109109
test "errdefer with payload" {
110-
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
111110
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
112111
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
113112
if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
@@ -129,7 +128,6 @@ test "errdefer with payload" {
129128
}
130129

131130
test "reference to errdefer payload" {
132-
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
133131
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
134132
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
135133
if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest; // TODO

test/behavior/optional.zig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,6 @@ test "0-bit child type coerced to optional" {
390390
}
391391

392392
test "array of optional unaligned types" {
393-
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
394393
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
395394
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
396395
if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;

test/behavior/pointers.zig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,6 @@ test "implicit casting between C pointer and optional non-C pointer" {
246246
}
247247

248248
test "implicit cast error unions with non-optional to optional pointer" {
249-
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
250249
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
251250
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
252251
if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;

test/behavior/slice.zig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -710,7 +710,6 @@ test "slice pointer-to-array zero length" {
710710
}
711711

712712
test "type coercion of pointer to anon struct literal to pointer to slice" {
713-
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
714713
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
715714
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
716715
if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;

test/behavior/struct.zig

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -955,7 +955,6 @@ test "tuple element initialized with fn call" {
955955
}
956956

957957
test "struct with union field" {
958-
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
959958
if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
960959
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
961960
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO

test/behavior/struct_contains_slice_of_itself.zig

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ const NodeAligned = struct {
1212
};
1313

1414
test "struct contains slice of itself" {
15-
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1615
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1716
if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
1817

@@ -53,7 +52,6 @@ test "struct contains slice of itself" {
5352
}
5453

5554
test "struct contains aligned slice of itself" {
56-
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5755
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
5856
if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
5957

0 commit comments

Comments
 (0)