| author | |
| committer | |
| log | b74cd902c6abf46644329409dae493335a1708bc |
| tree | 660c3d3afaf2d3cd1c2f996d2ba1fe92ddd2baea |
| parent | 1f28c72c395e9418cbb074d1490426b3dc359a5f |
| signature |
10 files changed, 4 insertions(+), 24 deletions(-)
src/arch/aarch64/CodeGen.zig+4-8| ... | ... | @@ -538,7 +538,7 @@ fn genBody(self: *Self, body: []const Air.Inst.Index) InnerError!void { |
| 538 | 538 | .sub, .ptr_sub => try self.airBinOp(inst), |
| 539 | 539 | .subwrap => try self.airSubWrap(inst), |
| 540 | 540 | .sub_sat => try self.airSubSat(inst), |
| 541 | .mul => try self.airMul(inst), | |
| 541 | .mul => try self.airBinOp(inst), | |
| 542 | 542 | .mulwrap => try self.airMulWrap(inst), |
| 543 | 543 | .mul_sat => try self.airMulSat(inst), |
| 544 | 544 | .rem => try self.airRem(inst), |
| ... | ... | @@ -820,7 +820,9 @@ fn allocMemPtr(self: *Self, inst: Air.Inst.Index) !u32 { |
| 820 | 820 | const elem_ty = self.air.typeOfIndex(inst).elemType(); |
| 821 | 821 | |
| 822 | 822 | if (!elem_ty.hasRuntimeBits()) { |
| 823 | return self.allocMem(inst, @sizeOf(usize), @alignOf(usize)); | |
| 823 | // As this stack item will never be dereferenced at runtime, | |
| 824 | // return the current stack offset | |
| 825 | return self.next_stack_offset; | |
| 824 | 826 | } |
| 825 | 827 | |
| 826 | 828 | const abi_size = math.cast(u32, elem_ty.abiSize(self.target.*)) catch { |
| ... | ... | @@ -1540,12 +1542,6 @@ fn airSubSat(self: *Self, inst: Air.Inst.Index) !void { |
| 1540 | 1542 | return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none }); |
| 1541 | 1543 | } |
| 1542 | 1544 | |
| 1543 | fn airMul(self: *Self, inst: Air.Inst.Index) !void { | |
| 1544 | const bin_op = self.air.instructions.items(.data)[inst].bin_op; | |
| 1545 | const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement mul for {}", .{self.target.cpu.arch}); | |
| 1546 | return self.finishAir(inst, result, .{ bin_op.lhs, bin_op.rhs, .none }); | |
| 1547 | } | |
| 1548 | ||
| 1549 | 1545 | fn airMulWrap(self: *Self, inst: Air.Inst.Index) !void { |
| 1550 | 1546 | const bin_op = self.air.instructions.items(.data)[inst].bin_op; |
| 1551 | 1547 | const result: MCValue = if (self.liveness.isUnused(inst)) .dead else return self.fail("TODO implement mulwrap for {}", .{self.target.cpu.arch}); |
test/behavior/align.zig-1| ... | ... | @@ -351,7 +351,6 @@ test "read 128-bit field from default aligned struct in global memory" { |
| 351 | 351 | } |
| 352 | 352 | |
| 353 | 353 | test "struct field explicit alignment" { |
| 354 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 355 | 354 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; |
| 356 | 355 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 357 | 356 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
test/behavior/array.zig-1| ... | ... | @@ -7,7 +7,6 @@ const expectEqual = testing.expectEqual; |
| 7 | 7 | |
| 8 | 8 | test "array to slice" { |
| 9 | 9 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; |
| 10 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 11 | 10 | |
| 12 | 11 | const a: u32 align(4) = 3; |
| 13 | 12 | const b: u32 align(8) = 4; |
test/behavior/bitcast.zig-1| ... | ... | @@ -269,7 +269,6 @@ test "bitcast passed as tuple element" { |
| 269 | 269 | |
| 270 | 270 | test "triple level result location with bitcast sandwich passed as tuple element" { |
| 271 | 271 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; |
| 272 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 273 | 272 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 274 | 273 | |
| 275 | 274 | const S = struct { |
test/behavior/bugs/5474.zig-2| ... | ... | @@ -50,7 +50,6 @@ fn constant() !void { |
| 50 | 50 | |
| 51 | 51 | test "pointer-to-array constness for zero-size elements, var" { |
| 52 | 52 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 53 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 54 | 53 | |
| 55 | 54 | try mutable(); |
| 56 | 55 | comptime try mutable(); |
| ... | ... | @@ -58,7 +57,6 @@ test "pointer-to-array constness for zero-size elements, var" { |
| 58 | 57 | |
| 59 | 58 | test "pointer-to-array constness for zero-size elements, const" { |
| 60 | 59 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 61 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 62 | 60 | |
| 63 | 61 | try constant(); |
| 64 | 62 | comptime try constant(); |
test/behavior/math.zig-1| ... | ... | @@ -573,7 +573,6 @@ test "bit shift a u1" { |
| 573 | 573 | |
| 574 | 574 | test "truncating shift right" { |
| 575 | 575 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| 576 | // if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 577 | 576 | |
| 578 | 577 | try testShrTrunc(maxInt(u16)); |
| 579 | 578 | comptime try testShrTrunc(maxInt(u16)); |
test/behavior/sizeof_and_typeof.zig-2| ... | ... | @@ -187,7 +187,6 @@ test "@sizeOf(T) == 0 doesn't force resolving struct size" { |
| 187 | 187 | |
| 188 | 188 | test "@TypeOf() has no runtime side effects" { |
| 189 | 189 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 190 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 191 | 190 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 192 | 191 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; |
| 193 | 192 | const S = struct { |
| ... | ... | @@ -204,7 +203,6 @@ test "@TypeOf() has no runtime side effects" { |
| 204 | 203 | |
| 205 | 204 | test "branching logic inside @TypeOf" { |
| 206 | 205 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 207 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 208 | 206 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 209 | 207 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; |
| 210 | 208 | const S = struct { |
test/behavior/slice.zig-1| ... | ... | @@ -204,7 +204,6 @@ test "slicing zero length array" { |
| 204 | 204 | const x = @intToPtr([*]i32, 0x1000)[0..0x500]; |
| 205 | 205 | const y = x[0x100..]; |
| 206 | 206 | test "compile time slice of pointer to hard coded address" { |
| 207 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 208 | 207 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 209 | 208 | if (builtin.zig_backend == .stage1) return error.SkipZigTest; |
| 210 | 209 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
test/behavior/struct.zig-3| ... | ... | @@ -927,7 +927,6 @@ test "anonymous struct literal syntax" { |
| 927 | 927 | test "fully anonymous struct" { |
| 928 | 928 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 929 | 929 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 930 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 931 | 930 | |
| 932 | 931 | const S = struct { |
| 933 | 932 | fn doTheTest() !void { |
| ... | ... | @@ -953,7 +952,6 @@ test "fully anonymous struct" { |
| 953 | 952 | test "fully anonymous list literal" { |
| 954 | 953 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 955 | 954 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 956 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 957 | 955 | |
| 958 | 956 | const S = struct { |
| 959 | 957 | fn doTheTest() !void { |
| ... | ... | @@ -983,7 +981,6 @@ test "tuple assigned to variable" { |
| 983 | 981 | |
| 984 | 982 | test "comptime struct field" { |
| 985 | 983 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 986 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 987 | 984 | |
| 988 | 985 | const T = struct { |
| 989 | 986 | a: i32, |
test/behavior/var_args.zig-4| ... | ... | @@ -15,7 +15,6 @@ fn add(args: anytype) i32 { |
| 15 | 15 | test "add arbitrary args" { |
| 16 | 16 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 17 | 17 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 18 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO | |
| 19 | 18 | |
| 20 | 19 | try expect(add(.{ @as(i32, 1), @as(i32, 2), @as(i32, 3), @as(i32, 4) }) == 10); |
| 21 | 20 | try expect(add(.{@as(i32, 1234)}) == 1234); |
| ... | ... | @@ -27,7 +26,6 @@ fn readFirstVarArg(args: anytype) void { |
| 27 | 26 | } |
| 28 | 27 | |
| 29 | 28 | test "send void arg to var args" { |
| 30 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 31 | 29 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 32 | 30 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 33 | 31 | |
| ... | ... | @@ -90,7 +88,6 @@ fn foo2(args: anytype) bool { |
| 90 | 88 | } |
| 91 | 89 | |
| 92 | 90 | test "array of var args functions" { |
| 93 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 94 | 91 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 95 | 92 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 96 | 93 | |
| ... | ... | @@ -99,7 +96,6 @@ test "array of var args functions" { |
| 99 | 96 | } |
| 100 | 97 | |
| 101 | 98 | test "pass zero length array to var args param" { |
| 102 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; | |
| 103 | 99 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| 104 | 100 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| 105 | 101 |