authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-10-19 02:10:30-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2022-10-25 05:11:29-04:00
log912b84bbad698d18a6b844f9c05c074d2880e35b
tree9432636c0915dfdbb3bd23e26aa725debad56d2b
parent6921b0a850771fa7729930a9ec64b27b4e57e79b

cbe: fix atomics


14 files changed, 122 insertions(+), 87 deletions(-)

lib/include/zig.h+34-31
...@@ -101,19 +101,20 @@...@@ -101,19 +101,20 @@
101101
102#if __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_ATOMICS__)102#if __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_ATOMICS__)
103#include <stdatomic.h>103#include <stdatomic.h>
104#define zig_atomic(type) _Atomic(type)
104#define zig_cmpxchg_strong(obj, expected, desired, succ, fail) atomic_compare_exchange_strong_explicit(obj, &(expected), desired, succ, fail)105#define zig_cmpxchg_strong(obj, expected, desired, succ, fail) atomic_compare_exchange_strong_explicit(obj, &(expected), desired, succ, fail)
105#define zig_cmpxchg_weak (obj, expected, desired, succ, fail) atomic_compare_exchange_weak_explicit (obj, &(expected), desired, succ, fail)106#define zig_cmpxchg_weak(obj, expected, desired, succ, fail) atomic_compare_exchange_weak_explicit (obj, &(expected), desired, succ, fail)
106#define zig_atomicrmw_xchg(obj, arg, order) atomic_exchange_explicit (obj, arg, order)107#define zig_atomicrmw_xchg(obj, arg, order) atomic_exchange_explicit (obj, arg, order)
107#define zig_atomicrmw_add (obj, arg, order) atomic_fetch_add_explicit (obj, arg, order)108#define zig_atomicrmw_add(obj, arg, order) atomic_fetch_add_explicit (obj, arg, order)
108#define zig_atomicrmw_sub (obj, arg, order) atomic_fetch_sub_explicit (obj, arg, order)109#define zig_atomicrmw_sub(obj, arg, order) atomic_fetch_sub_explicit (obj, arg, order)
109#define zig_atomicrmw_or (obj, arg, order) atomic_fetch_or_explicit (obj, arg, order)110#define zig_atomicrmw_or(obj, arg, order) atomic_fetch_or_explicit (obj, arg, order)
110#define zig_atomicrmw_xor (obj, arg, order) atomic_fetch_xor_explicit (obj, arg, order)111#define zig_atomicrmw_xor(obj, arg, order) atomic_fetch_xor_explicit (obj, arg, order)
111#define zig_atomicrmw_and (obj, arg, order) atomic_fetch_and_explicit (obj, arg, order)112#define zig_atomicrmw_and(obj, arg, order) atomic_fetch_and_explicit (obj, arg, order)
112#define zig_atomicrmw_nand(obj, arg, order) atomic_fetch_nand_explicit(obj, arg, order)113#define zig_atomicrmw_nand(obj, arg, order) __atomic_fetch_nand (obj, arg, order)
113#define zig_atomicrmw_min (obj, arg, order) atomic_fetch_min_explicit (obj, arg, order)114#define zig_atomicrmw_min(obj, arg, order) __atomic_fetch_min (obj, arg, order)
114#define zig_atomicrmw_max (obj, arg, order) atomic_fetch_max_explicit (obj, arg, order)115#define zig_atomicrmw_max(obj, arg, order) __atomic_fetch_max (obj, arg, order)
115#define zig_atomic_store (obj, arg, order) atomic_store_explicit (obj, arg, order)116#define zig_atomic_store(obj, arg, order) atomic_store_explicit (obj, arg, order)
116#define zig_atomic_load (obj, order) atomic_load_explicit (obj, order)117#define zig_atomic_load(obj, order) atomic_load_explicit (obj, order)
117#define zig_fence(order) atomic_thread_fence(order)118#define zig_fence(order) atomic_thread_fence(order)
118#elif __GNUC__119#elif __GNUC__
119#define memory_order_relaxed __ATOMIC_RELAXED120#define memory_order_relaxed __ATOMIC_RELAXED
...@@ -122,19 +123,20 @@...@@ -122,19 +123,20 @@
122#define memory_order_release __ATOMIC_RELEASE123#define memory_order_release __ATOMIC_RELEASE
123#define memory_order_acq_rel __ATOMIC_ACQ_REL124#define memory_order_acq_rel __ATOMIC_ACQ_REL
124#define memory_order_seq_cst __ATOMIC_SEQ_CST125#define memory_order_seq_cst __ATOMIC_SEQ_CST
126#define zig_atomic(type) type
125#define zig_cmpxchg_strong(obj, expected, desired, succ, fail) __atomic_compare_exchange_n(obj, &(expected), desired, false, succ, fail)127#define zig_cmpxchg_strong(obj, expected, desired, succ, fail) __atomic_compare_exchange_n(obj, &(expected), desired, false, succ, fail)
126#define zig_cmpxchg_weak (obj, expected, desired, succ, fail) __atomic_compare_exchange_n(obj, &(expected), desired, true , succ, fail)128#define zig_cmpxchg_weak(obj, expected, desired, succ, fail) __atomic_compare_exchange_n(obj, &(expected), desired, true , succ, fail)
127#define zig_atomicrmw_xchg(obj, arg, order) __atomic_exchange_n(obj, arg, order)129#define zig_atomicrmw_xchg(obj, arg, order) __atomic_exchange_n(obj, arg, order)
128#define zig_atomicrmw_add (obj, arg, order) __atomic_fetch_add (obj, arg, order)130#define zig_atomicrmw_add(obj, arg, order) __atomic_fetch_add (obj, arg, order)
129#define zig_atomicrmw_sub (obj, arg, order) __atomic_fetch_sub (obj, arg, order)131#define zig_atomicrmw_sub(obj, arg, order) __atomic_fetch_sub (obj, arg, order)
130#define zig_atomicrmw_or (obj, arg, order) __atomic_fetch_or (obj, arg, order)132#define zig_atomicrmw_or(obj, arg, order) __atomic_fetch_or (obj, arg, order)
131#define zig_atomicrmw_xor (obj, arg, order) __atomic_fetch_xor (obj, arg, order)133#define zig_atomicrmw_xor(obj, arg, order) __atomic_fetch_xor (obj, arg, order)
132#define zig_atomicrmw_and (obj, arg, order) __atomic_fetch_and (obj, arg, order)134#define zig_atomicrmw_and(obj, arg, order) __atomic_fetch_and (obj, arg, order)
133#define zig_atomicrmw_nand(obj, arg, order) __atomic_fetch_nand(obj, arg, order)135#define zig_atomicrmw_nand(obj, arg, order) __atomic_fetch_nand(obj, arg, order)
134#define zig_atomicrmw_min (obj, arg, order) __atomic_fetch_min (obj, arg, order)136#define zig_atomicrmw_min(obj, arg, order) __atomic_fetch_min (obj, arg, order)
135#define zig_atomicrmw_max (obj, arg, order) __atomic_fetch_max (obj, arg, order)137#define zig_atomicrmw_max(obj, arg, order) __atomic_fetch_max (obj, arg, order)
136#define zig_atomic_store (obj, arg, order) __atomic_store (obj, arg, order)138#define zig_atomic_store(obj, arg, order) __atomic_store_n (obj, arg, order)
137#define zig_atomic_load (obj, order) __atomic_load (obj, order)139#define zig_atomic_load(obj, order) __atomic_load_n (obj, order)
138#define zig_fence(order) __atomic_thread_fence(order)140#define zig_fence(order) __atomic_thread_fence(order)
139#else141#else
140#define memory_order_relaxed 0142#define memory_order_relaxed 0
...@@ -143,19 +145,20 @@...@@ -143,19 +145,20 @@
143#define memory_order_release 3145#define memory_order_release 3
144#define memory_order_acq_rel 4146#define memory_order_acq_rel 4
145#define memory_order_seq_cst 5147#define memory_order_seq_cst 5
148#define zig_atomic(type) type
146#define zig_cmpxchg_strong(obj, expected, desired, succ, fail) zig_unimplemented()149#define zig_cmpxchg_strong(obj, expected, desired, succ, fail) zig_unimplemented()
147#define zig_cmpxchg_weak (obj, expected, desired, succ, fail) zig_unimplemented()150#define zig_cmpxchg_weak(obj, expected, desired, succ, fail) zig_unimplemented()
148#define zig_atomicrmw_xchg(obj, arg, order) zig_unimplemented()151#define zig_atomicrmw_xchg(obj, arg, order) zig_unimplemented()
149#define zig_atomicrmw_add (obj, arg, order) zig_unimplemented()152#define zig_atomicrmw_add(obj, arg, order) zig_unimplemented()
150#define zig_atomicrmw_sub (obj, arg, order) zig_unimplemented()153#define zig_atomicrmw_sub(obj, arg, order) zig_unimplemented()
151#define zig_atomicrmw_or (obj, arg, order) zig_unimplemented()154#define zig_atomicrmw_or(obj, arg, order) zig_unimplemented()
152#define zig_atomicrmw_xor (obj, arg, order) zig_unimplemented()155#define zig_atomicrmw_xor(obj, arg, order) zig_unimplemented()
153#define zig_atomicrmw_and (obj, arg, order) zig_unimplemented()156#define zig_atomicrmw_and(obj, arg, order) zig_unimplemented()
154#define zig_atomicrmw_nand(obj, arg, order) zig_unimplemented()157#define zig_atomicrmw_nand(obj, arg, order) zig_unimplemented()
155#define zig_atomicrmw_min (obj, arg, order) zig_unimplemented()158#define zig_atomicrmw_min(obj, arg, order) zig_unimplemented()
156#define zig_atomicrmw_max (obj, arg, order) zig_unimplemented()159#define zig_atomicrmw_max(obj, arg, order) zig_unimplemented()
157#define zig_atomic_store (obj, arg, order) zig_unimplemented()160#define zig_atomic_store(obj, arg, order) zig_unimplemented()
158#define zig_atomic_load (obj, order) zig_unimplemented()161#define zig_atomic_load(obj, order) zig_unimplemented()
159#define zig_fence(order) zig_unimplemented()162#define zig_fence(order) zig_unimplemented()
160#endif163#endif
161164
src/codegen/c.zig+88-21
...@@ -587,9 +587,9 @@ pub const DeclGen = struct {...@@ -587,9 +587,9 @@ pub const DeclGen = struct {
587587
588 try writer.writeByte('(');588 try writer.writeByte('(');
589 try dg.renderTypecast(writer, ty);589 try dg.renderTypecast(writer, ty);
590 try writer.writeAll("){ .is_null = ");590 try writer.writeAll("){ .payload = ");
591 try dg.renderValue(writer, Type.bool, val, location);591 try dg.renderValue(writer, Type.bool, val, location);
592 try writer.writeAll(", .payload = ");592 try writer.writeAll(", .is_null = ");
593 try dg.renderValue(writer, payload_ty, val, location);593 try dg.renderValue(writer, payload_ty, val, location);
594 return writer.writeAll(" }");594 return writer.writeAll(" }");
595 },595 },
...@@ -820,11 +820,13 @@ pub const DeclGen = struct {...@@ -820,11 +820,13 @@ pub const DeclGen = struct {
820 try writer.writeAll("){");820 try writer.writeAll("){");
821 if (val.castTag(.opt_payload)) |pl| {821 if (val.castTag(.opt_payload)) |pl| {
822 const payload_val = pl.data;822 const payload_val = pl.data;
823 try writer.writeAll(" .is_null = false, .payload = ");823 try writer.writeAll(" .payload = ");
824 try dg.renderValue(writer, payload_ty, payload_val, location);824 try dg.renderValue(writer, payload_ty, payload_val, location);
825 try writer.writeAll(" }");825 try writer.writeAll(", .is_null = false }");
826 } else {826 } else {
827 try writer.writeAll(" .is_null = true }");827 try writer.writeAll(" .payload = ");
828 try dg.renderValue(writer, payload_ty, Value.undef, location);
829 try writer.writeAll(", .is_null = true }");
828 }830 }
829 },831 },
830 .ErrorSet => {832 .ErrorSet => {
...@@ -3870,10 +3872,23 @@ fn airStructFieldVal(f: *Function, inst: Air.Inst.Index) !CValue {...@@ -3870,10 +3872,23 @@ fn airStructFieldVal(f: *Function, inst: Air.Inst.Index) !CValue {
3870 const payload = if (struct_ty.tag() == .union_tagged or struct_ty.tag() == .union_safety_tagged) "payload." else "";3872 const payload = if (struct_ty.tag() == .union_tagged or struct_ty.tag() == .union_safety_tagged) "payload." else "";
38713873
3872 const inst_ty = f.air.typeOfIndex(inst);3874 const inst_ty = f.air.typeOfIndex(inst);
3873 const local = try f.allocLocal(inst_ty, .Const);3875 const is_array = inst_ty.zigTypeTag() == .Array;
3874 try writer.writeAll(" = ");3876 const local = try f.allocLocal(inst_ty, if (is_array) .Mut else .Const);
3875 try f.writeCValue(writer, struct_byval);3877
3876 try writer.print(".{s}{ };\n", .{ payload, fmtIdent(field_name) });3878 if (is_array) {
3879 try writer.writeAll(";\n");
3880 try writer.writeAll("memcpy(");
3881 try f.writeCValue(writer, local);
3882 try writer.writeAll(", ");
3883 try f.writeCValue(writer, struct_byval);
3884 try writer.print(".{s}{ }, sizeof(", .{ payload, fmtIdent(field_name) });
3885 try f.writeCValue(writer, local);
3886 try writer.writeAll("));\n");
3887 } else {
3888 try writer.writeAll(" = ");
3889 try f.writeCValue(writer, struct_byval);
3890 try writer.print(".{s}{ };\n", .{ payload, fmtIdent(field_name) });
3891 }
3877 return local;3892 return local;
3878}3893}
38793894
...@@ -3962,9 +3977,9 @@ fn airWrapOptional(f: *Function, inst: Air.Inst.Index) !CValue {...@@ -3962,9 +3977,9 @@ fn airWrapOptional(f: *Function, inst: Air.Inst.Index) !CValue {
39623977
3963 // .wrap_optional is used to convert non-optionals into optionals so it can never be null.3978 // .wrap_optional is used to convert non-optionals into optionals so it can never be null.
3964 const local = try f.allocLocal(inst_ty, .Const);3979 const local = try f.allocLocal(inst_ty, .Const);
3965 try writer.writeAll(" = { .is_null = false, .payload =");3980 try writer.writeAll(" = { .payload = ");
3966 try f.writeCValue(writer, operand);3981 try f.writeCValue(writer, operand);
3967 try writer.writeAll("};\n");3982 try writer.writeAll(", .is_null = false };\n");
3968 return local;3983 return local;
3969}3984}
39703985
...@@ -4203,23 +4218,54 @@ fn airCmpxchg(f: *Function, inst: Air.Inst.Index, flavor: [*:0]const u8) !CValue...@@ -4203,23 +4218,54 @@ fn airCmpxchg(f: *Function, inst: Air.Inst.Index, flavor: [*:0]const u8) !CValue
4203 const ty_pl = f.air.instructions.items(.data)[inst].ty_pl;4218 const ty_pl = f.air.instructions.items(.data)[inst].ty_pl;
4204 const extra = f.air.extraData(Air.Cmpxchg, ty_pl.payload).data;4219 const extra = f.air.extraData(Air.Cmpxchg, ty_pl.payload).data;
4205 const inst_ty = f.air.typeOfIndex(inst);4220 const inst_ty = f.air.typeOfIndex(inst);
4221 const is_struct = !inst_ty.isPtrLikeOptional();
4222 const ptr_ty = f.air.typeOf(extra.ptr);
4206 const ptr = try f.resolveInst(extra.ptr);4223 const ptr = try f.resolveInst(extra.ptr);
4207 const expected_value = try f.resolveInst(extra.expected_value);4224 const expected_value = try f.resolveInst(extra.expected_value);
4208 const new_value = try f.resolveInst(extra.new_value);4225 const new_value = try f.resolveInst(extra.new_value);
4209 const local = try f.allocLocal(inst_ty, .Const);
4210 const writer = f.object.writer();4226 const writer = f.object.writer();
42114227
4212 try writer.print(" = zig_cmpxchg_{s}(", .{flavor});4228 const local = try f.allocLocal(inst_ty, .Mut);
4229 try writer.writeAll(" = ");
4230 if (is_struct) try writer.writeAll("{ .payload = ");
4231 try f.writeCValue(writer, expected_value);
4232 if (is_struct) try writer.writeAll(", .is_null = false }");
4233 try writer.writeAll(";\n");
4234
4235 if (is_struct) {
4236 try f.writeCValue(writer, local);
4237 try writer.writeAll(".is_null = ");
4238 } else {
4239 try writer.writeAll("if (");
4240 }
4241 try writer.print("zig_cmpxchg_{s}((zig_atomic(", .{flavor});
4242 try f.object.dg.renderTypecast(writer, ptr_ty.elemType());
4243 try writer.writeByte(')');
4244 if (ptr_ty.isVolatilePtr()) try writer.writeAll(" volatile");
4245 try writer.writeAll(" *)");
4213 try f.writeCValue(writer, ptr);4246 try f.writeCValue(writer, ptr);
4214 try writer.writeAll(", ");4247 try writer.writeAll(", ");
4215 try f.writeCValue(writer, expected_value);4248 try f.writeCValue(writer, local);
4249 if (is_struct) {
4250 try writer.writeAll(".payload");
4251 }
4216 try writer.writeAll(", ");4252 try writer.writeAll(", ");
4217 try f.writeCValue(writer, new_value);4253 try f.writeCValue(writer, new_value);
4218 try writer.writeAll(", ");4254 try writer.writeAll(", ");
4219 try writeMemoryOrder(writer, extra.successOrder());4255 try writeMemoryOrder(writer, extra.successOrder());
4220 try writer.writeAll(", ");4256 try writer.writeAll(", ");
4221 try writeMemoryOrder(writer, extra.failureOrder());4257 try writeMemoryOrder(writer, extra.failureOrder());
4222 try writer.writeAll(");\n");4258 try writer.writeByte(')');
4259 if (is_struct) {
4260 try writer.writeAll(";\n");
4261 } else {
4262 try writer.writeAll(") {\n");
4263 f.object.indent_writer.pushIndent();
4264 try f.writeCValue(writer, local);
4265 try writer.writeAll(" = NULL;\n");
4266 f.object.indent_writer.popIndent();
4267 try writer.writeAll("}\n");
4268 }
42234269
4224 return local;4270 return local;
4225}4271}
...@@ -4228,12 +4274,26 @@ fn airAtomicRmw(f: *Function, inst: Air.Inst.Index) !CValue {...@@ -4228,12 +4274,26 @@ fn airAtomicRmw(f: *Function, inst: Air.Inst.Index) !CValue {
4228 const pl_op = f.air.instructions.items(.data)[inst].pl_op;4274 const pl_op = f.air.instructions.items(.data)[inst].pl_op;
4229 const extra = f.air.extraData(Air.AtomicRmw, pl_op.payload).data;4275 const extra = f.air.extraData(Air.AtomicRmw, pl_op.payload).data;
4230 const inst_ty = f.air.typeOfIndex(inst);4276 const inst_ty = f.air.typeOfIndex(inst);
4277 const ptr_ty = f.air.typeOf(pl_op.operand);
4231 const ptr = try f.resolveInst(pl_op.operand);4278 const ptr = try f.resolveInst(pl_op.operand);
4232 const operand = try f.resolveInst(extra.operand);4279 const operand = try f.resolveInst(extra.operand);
4233 const local = try f.allocLocal(inst_ty, .Const);4280 const local = try f.allocLocal(inst_ty, .Const);
4234 const writer = f.object.writer();4281 const writer = f.object.writer();
42354282
4236 try writer.print(" = zig_atomicrmw_{s}(", .{toAtomicRmwSuffix(extra.op())});4283 try writer.print(" = zig_atomicrmw_{s}((", .{toAtomicRmwSuffix(extra.op())});
4284 switch (extra.op()) {
4285 else => {
4286 try writer.writeAll("zig_atomic(");
4287 try f.object.dg.renderTypecast(writer, ptr_ty.elemType());
4288 try writer.writeByte(')');
4289 },
4290 .Nand, .Min, .Max => {
4291 // These are missing from stdatomic.h, so no atomic types for now.
4292 try f.object.dg.renderTypecast(writer, ptr_ty.elemType());
4293 },
4294 }
4295 if (ptr_ty.isVolatilePtr()) try writer.writeAll(" volatile");
4296 try writer.writeAll(" *)");
4237 try f.writeCValue(writer, ptr);4297 try f.writeCValue(writer, ptr);
4238 try writer.writeAll(", ");4298 try writer.writeAll(", ");
4239 try f.writeCValue(writer, operand);4299 try f.writeCValue(writer, operand);
...@@ -4255,7 +4315,11 @@ fn airAtomicLoad(f: *Function, inst: Air.Inst.Index) !CValue {...@@ -4255,7 +4315,11 @@ fn airAtomicLoad(f: *Function, inst: Air.Inst.Index) !CValue {
4255 const local = try f.allocLocal(inst_ty, .Const);4315 const local = try f.allocLocal(inst_ty, .Const);
4256 const writer = f.object.writer();4316 const writer = f.object.writer();
42574317
4258 try writer.writeAll(" = zig_atomic_load(");4318 try writer.writeAll(" = zig_atomic_load((zig_atomic(");
4319 try f.object.dg.renderTypecast(writer, ptr_ty.elemType());
4320 try writer.writeByte(')');
4321 if (ptr_ty.isVolatilePtr()) try writer.writeAll(" volatile");
4322 try writer.writeAll(" *)");
4259 try f.writeCValue(writer, ptr);4323 try f.writeCValue(writer, ptr);
4260 try writer.writeAll(", ");4324 try writer.writeAll(", ");
4261 try writeMemoryOrder(writer, atomic_load.order);4325 try writeMemoryOrder(writer, atomic_load.order);
...@@ -4266,19 +4330,22 @@ fn airAtomicLoad(f: *Function, inst: Air.Inst.Index) !CValue {...@@ -4266,19 +4330,22 @@ fn airAtomicLoad(f: *Function, inst: Air.Inst.Index) !CValue {
42664330
4267fn airAtomicStore(f: *Function, inst: Air.Inst.Index, order: [*:0]const u8) !CValue {4331fn airAtomicStore(f: *Function, inst: Air.Inst.Index, order: [*:0]const u8) !CValue {
4268 const bin_op = f.air.instructions.items(.data)[inst].bin_op;4332 const bin_op = f.air.instructions.items(.data)[inst].bin_op;
4333 const ptr_ty = f.air.typeOf(bin_op.lhs);
4269 const ptr = try f.resolveInst(bin_op.lhs);4334 const ptr = try f.resolveInst(bin_op.lhs);
4270 const element = try f.resolveInst(bin_op.rhs);4335 const element = try f.resolveInst(bin_op.rhs);
4271 const inst_ty = f.air.typeOfIndex(inst);
4272 const local = try f.allocLocal(inst_ty, .Const);
4273 const writer = f.object.writer();4336 const writer = f.object.writer();
42744337
4275 try writer.writeAll(" = zig_atomic_store(");4338 try writer.writeAll("zig_atomic_store((zig_atomic(");
4339 try f.object.dg.renderTypecast(writer, ptr_ty.elemType());
4340 try writer.writeByte(')');
4341 if (ptr_ty.isVolatilePtr()) try writer.writeAll(" volatile");
4342 try writer.writeAll(" *)");
4276 try f.writeCValue(writer, ptr);4343 try f.writeCValue(writer, ptr);
4277 try writer.writeAll(", ");4344 try writer.writeAll(", ");
4278 try f.writeCValue(writer, element);4345 try f.writeCValue(writer, element);
4279 try writer.print(", {s});\n", .{order});4346 try writer.print(", {s});\n", .{order});
42804347
4281 return local;4348 return CValue.none;
4282}4349}
42834350
4284fn airMemset(f: *Function, inst: Air.Inst.Index) !CValue {4351fn airMemset(f: *Function, inst: Air.Inst.Index) !CValue {
test/behavior/atomics.zig-13
...@@ -4,7 +4,6 @@ const expect = std.testing.expect;...@@ -4,7 +4,6 @@ const expect = std.testing.expect;
4const expectEqual = std.testing.expectEqual;4const expectEqual = std.testing.expectEqual;
55
6test "cmpxchg" {6test "cmpxchg" {
7 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -44,7 +43,6 @@ test "fence" {...@@ -44,7 +43,6 @@ test "fence" {
44}43}
4544
46test "atomicrmw and atomicload" {45test "atomicrmw and atomicload" {
47 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
48 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO46 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO47 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -74,7 +72,6 @@ fn testAtomicLoad(ptr: *u8) !void {...@@ -74,7 +72,6 @@ fn testAtomicLoad(ptr: *u8) !void {
74}72}
7573
76test "cmpxchg with ptr" {74test "cmpxchg with ptr" {
77 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
78 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO75 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
79 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO76 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
80 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO77 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -101,7 +98,6 @@ test "cmpxchg with ptr" {...@@ -101,7 +98,6 @@ test "cmpxchg with ptr" {
101}98}
10299
103test "cmpxchg with ignored result" {100test "cmpxchg with ignored result" {
104 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO101 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
106 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO102 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
107 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO103 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -116,7 +112,6 @@ test "cmpxchg with ignored result" {...@@ -116,7 +112,6 @@ test "cmpxchg with ignored result" {
116}112}
117113
118test "128-bit cmpxchg" {114test "128-bit cmpxchg" {
119 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
120 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO115 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
121 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO116 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO117 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -150,7 +145,6 @@ fn test_u128_cmpxchg() !void {...@@ -150,7 +145,6 @@ fn test_u128_cmpxchg() !void {
150var a_global_variable = @as(u32, 1234);145var a_global_variable = @as(u32, 1234);
151146
152test "cmpxchg on a global variable" {147test "cmpxchg on a global variable" {
153 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
154 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO148 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO149 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO150 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -169,7 +163,6 @@ test "cmpxchg on a global variable" {...@@ -169,7 +163,6 @@ test "cmpxchg on a global variable" {
169}163}
170164
171test "atomic load and rmw with enum" {165test "atomic load and rmw with enum" {
172 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
173 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO166 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
174 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO167 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
175 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO168 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -188,7 +181,6 @@ test "atomic load and rmw with enum" {...@@ -188,7 +181,6 @@ test "atomic load and rmw with enum" {
188}181}
189182
190test "atomic store" {183test "atomic store" {
191 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
192 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO184 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
193 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO185 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
194 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO186 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -203,7 +195,6 @@ test "atomic store" {...@@ -203,7 +195,6 @@ test "atomic store" {
203}195}
204196
205test "atomic store comptime" {197test "atomic store comptime" {
206 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
207 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO198 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
208 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO199 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
209 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO200 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -223,7 +214,6 @@ fn testAtomicStore() !void {...@@ -223,7 +214,6 @@ fn testAtomicStore() !void {
223}214}
224215
225test "atomicrmw with floats" {216test "atomicrmw with floats" {
226 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
227 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO217 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
228 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO218 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
229 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO219 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -252,7 +242,6 @@ fn testAtomicRmwFloat() !void {...@@ -252,7 +242,6 @@ fn testAtomicRmwFloat() !void {
252}242}
253243
254test "atomicrmw with ints" {244test "atomicrmw with ints" {
255 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
256 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO245 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
257 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO246 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
258 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO247 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -287,7 +276,6 @@ fn testAtomicRmwInt() !void {...@@ -287,7 +276,6 @@ fn testAtomicRmwInt() !void {
287}276}
288277
289test "atomics with different types" {278test "atomics with different types" {
290 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
291 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO279 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
292 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO280 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
293 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO281 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -318,7 +306,6 @@ fn testAtomicsWithType(comptime T: type, a: T, b: T) !void {...@@ -318,7 +306,6 @@ fn testAtomicsWithType(comptime T: type, a: T, b: T) !void {
318}306}
319307
320test "return @atomicStore, using it as a void value" {308test "return @atomicStore, using it as a void value" {
321 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
322 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO309 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
323 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO310 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
324 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO311 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
test/behavior/bugs/13068.zig-1
...@@ -7,7 +7,6 @@ var list = std.ArrayList(u32).init(allocator);...@@ -7,7 +7,6 @@ var list = std.ArrayList(u32).init(allocator);
7test {7test {
8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO8 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
1312
test/behavior/defer.zig-1
...@@ -108,7 +108,6 @@ test "mixing normal and error defers" {...@@ -108,7 +108,6 @@ test "mixing normal and error defers" {
108}108}
109109
110test "errdefer with payload" {110test "errdefer with payload" {
111 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
112 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO111 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
113 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO112 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
114 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO113 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/eval.zig-1
...@@ -531,7 +531,6 @@ test "@tagName of @typeInfo" {...@@ -531,7 +531,6 @@ test "@tagName of @typeInfo" {
531}531}
532532
533test "static eval list init" {533test "static eval list init" {
534 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
535 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO534 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
536 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO535 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
537 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO536 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
test/behavior/packed-struct.zig-3
...@@ -150,7 +150,6 @@ test "consistent size of packed structs" {...@@ -150,7 +150,6 @@ test "consistent size of packed structs" {
150150
151test "correct sizeOf and offsets in packed structs" {151test "correct sizeOf and offsets in packed structs" {
152 if (builtin.zig_backend == .stage1) return error.SkipZigTest;152 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
153 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
154 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO153 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
155 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO154 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
156 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO155 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -221,7 +220,6 @@ test "correct sizeOf and offsets in packed structs" {...@@ -221,7 +220,6 @@ test "correct sizeOf and offsets in packed structs" {
221220
222test "nested packed structs" {221test "nested packed structs" {
223 if (builtin.zig_backend == .stage1) return error.SkipZigTest;222 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
224 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
225 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO223 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
226 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO224 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
227 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO225 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -270,7 +268,6 @@ test "nested packed structs" {...@@ -270,7 +268,6 @@ test "nested packed structs" {
270268
271test "regular in irregular packed struct" {269test "regular in irregular packed struct" {
272 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;270 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
273 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
274 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;271 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
275 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;272 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;273 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
test/behavior/packed_struct_explicit_backing_int.zig-1
...@@ -6,7 +6,6 @@ const native_endian = builtin.cpu.arch.endian();...@@ -6,7 +6,6 @@ const native_endian = builtin.cpu.arch.endian();
66
7test "packed struct explicit backing integer" {7test "packed struct explicit backing integer" {
8 assert(builtin.zig_backend != .stage1);8 assert(builtin.zig_backend != .stage1);
9 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO9 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
11 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO10 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
12 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
test/behavior/pointers.zig-2
...@@ -157,7 +157,6 @@ test "implicit casting between C pointer and optional non-C pointer" {...@@ -157,7 +157,6 @@ test "implicit casting between C pointer and optional non-C pointer" {
157}157}
158158
159test "implicit cast error unions with non-optional to optional pointer" {159test "implicit cast error unions with non-optional to optional pointer" {
160 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
161 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO160 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
162 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO161 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
163 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO162 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -403,7 +402,6 @@ test "@ptrToInt on null optional at comptime" {...@@ -403,7 +402,6 @@ test "@ptrToInt on null optional at comptime" {
403}402}
404403
405test "indexing array with sentinel returns correct type" {404test "indexing array with sentinel returns correct type" {
406 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
407 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO405 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
408 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO406 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
409 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO407 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
test/behavior/struct.zig-2
...@@ -339,7 +339,6 @@ fn testPassSliceOfEmptyStructToFn(slice: []const EmptyStruct2) usize {...@@ -339,7 +339,6 @@ fn testPassSliceOfEmptyStructToFn(slice: []const EmptyStruct2) usize {
339339
340test "self-referencing struct via array member" {340test "self-referencing struct via array member" {
341 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;341 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
342 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
343 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO342 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
344 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO343 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
345 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO344 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
...@@ -978,7 +977,6 @@ test "comptime struct field" {...@@ -978,7 +977,6 @@ test "comptime struct field" {
978}977}
979978
980test "tuple element initialized with fn call" {979test "tuple element initialized with fn call" {
981 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
982 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO980 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
983 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO981 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
984 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO982 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
test/behavior/switch.zig-3
...@@ -420,7 +420,6 @@ test "else prong of switch on error set excludes other cases" {...@@ -420,7 +420,6 @@ test "else prong of switch on error set excludes other cases" {
420 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO420 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
421 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO421 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
422 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO422 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
423 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
424423
425 const S = struct {424 const S = struct {
426 fn doTheTest() !void {425 fn doTheTest() !void {
...@@ -455,7 +454,6 @@ test "switch prongs with error set cases make a new error set type for capture v...@@ -455,7 +454,6 @@ test "switch prongs with error set cases make a new error set type for capture v
455 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO454 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
456 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO455 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
457 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO456 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
458 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
459457
460 const S = struct {458 const S = struct {
461 fn doTheTest() !void {459 fn doTheTest() !void {
...@@ -621,7 +619,6 @@ test "switch capture copies its payload" {...@@ -621,7 +619,6 @@ test "switch capture copies its payload" {
621 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO619 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
622 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO620 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
623 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO621 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
624 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
625622
626 const S = struct {623 const S = struct {
627 fn doTheTest() !void {624 fn doTheTest() !void {
test/behavior/translate_c_macros.zig-4
...@@ -21,7 +21,6 @@ test "casting to void with a macro" {...@@ -21,7 +21,6 @@ test "casting to void with a macro" {
21}21}
2222
23test "initializer list expression" {23test "initializer list expression" {
24 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
25 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO24 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
26 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO25 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
27 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO26 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -48,7 +47,6 @@ test "reference to a struct type" {...@@ -48,7 +47,6 @@ test "reference to a struct type" {
48test "cast negative integer to pointer" {47test "cast negative integer to pointer" {
49 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO48 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO49 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
52 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO50 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
53 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
5452
...@@ -93,7 +91,6 @@ test "casting or calling a value with a paren-surrounded macro" {...@@ -93,7 +91,6 @@ test "casting or calling a value with a paren-surrounded macro" {
93test "nested comma operator" {91test "nested comma operator" {
94 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO92 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
95 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
96 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
97 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO94 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
98 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO95 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
9996
...@@ -117,7 +114,6 @@ test "cast functions" {...@@ -117,7 +114,6 @@ test "cast functions" {
117test "large integer macro" {114test "large integer macro" {
118 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO115 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
119 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO116 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
120 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
121 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO117 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
122 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO118 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
123119
test/behavior/type.zig-3
...@@ -200,7 +200,6 @@ test "Type.ErrorUnion" {...@@ -200,7 +200,6 @@ test "Type.ErrorUnion" {
200200
201test "Type.Opaque" {201test "Type.Opaque" {
202 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO202 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
203 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
204 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO203 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
205 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO204 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
206 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO205 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -350,7 +349,6 @@ test "Type.Struct" {...@@ -350,7 +349,6 @@ test "Type.Struct" {
350}349}
351350
352test "Type.Enum" {351test "Type.Enum" {
353 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
354 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO352 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
355 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO353 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
356 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO354 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
...@@ -395,7 +393,6 @@ test "Type.Enum" {...@@ -395,7 +393,6 @@ test "Type.Enum" {
395393
396test "Type.Union" {394test "Type.Union" {
397 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO395 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
398 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
399 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO396 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
400 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO397 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
401 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO398 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
test/behavior/union.zig-1
...@@ -1056,7 +1056,6 @@ test "containers with single-field enums" {...@@ -1056,7 +1056,6 @@ test "containers with single-field enums" {
1056}1056}
10571057
1058test "@unionInit on union with tag but no fields" {1058test "@unionInit on union with tag but no fields" {
1059 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
1060 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1059 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1061 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1060 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1062 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO1061 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO