diff options
| -rwxr-xr-x | ci/zinc/linux_test.sh | 1 | ||||
| -rw-r--r-- | src/Module.zig | 12 | ||||
| -rw-r--r-- | src/arch/wasm/CodeGen.zig | 45 | ||||
| -rw-r--r-- | src/arch/wasm/Emit.zig | 18 | ||||
| -rw-r--r-- | src/arch/wasm/Mir.zig | 10 | ||||
| -rw-r--r-- | test/behavior.zig | 348 |
6 files changed, 241 insertions, 193 deletions
diff --git a/ci/zinc/linux_test.sh b/ci/zinc/linux_test.sh index fa30bd5cdf..886fbdaf81 100755 --- a/ci/zinc/linux_test.sh +++ b/ci/zinc/linux_test.sh @@ -6,6 +6,7 @@ ZIG=$DEBUG_STAGING/bin/zig $ZIG test test/behavior.zig -fno-stage1 -fLLVM -I test $ZIG test test/behavior.zig -fno-stage1 -ofmt=c -I test +$ZIG test test/behavior.zig -fno-stage1 -target wasm32-wasi --test-cmd wasmtime --test-cmd-bin $ZIG build test-behavior -fqemu -fwasmtime $ZIG build test-compiler-rt -fqemu -fwasmtime diff --git a/src/Module.zig b/src/Module.zig index 7ef9a02e09..7fa91486d3 100644 --- a/src/Module.zig +++ b/src/Module.zig @@ -1226,19 +1226,20 @@ pub const Fn = struct { }; pub fn deinit(func: *Fn, gpa: Allocator) void { - if (func.getInferredErrorSet()) |map| { - map.deinit(gpa); + if (func.getInferredErrorSet()) |error_set_data| { + error_set_data.map.deinit(gpa); + error_set_data.functions.deinit(gpa); } } - pub fn getInferredErrorSet(func: *Fn) ?*std.StringHashMapUnmanaged(void) { + pub fn getInferredErrorSet(func: *Fn) ?*Type.Payload.ErrorSetInferred.Data { const ret_ty = func.owner_decl.ty.fnReturnType(); if (ret_ty.tag() == .generic_poison) { return null; } if (ret_ty.zigTypeTag() == .ErrorUnion) { if (ret_ty.errorUnionSet().castTag(.error_set_inferred)) |payload| { - return &payload.data.map; + return &payload.data; } } return null; @@ -1301,6 +1302,7 @@ pub const Namespace = struct { key.destroy(mod); } anon_decls.deinit(gpa); + ns.usingnamespace_set.deinit(gpa); } pub fn deleteAllDecls( @@ -1332,6 +1334,8 @@ pub const Namespace = struct { child_decl.destroy(mod); } anon_decls.deinit(gpa); + + ns.usingnamespace_set.deinit(gpa); } // This renders e.g. "std.fs.Dir.OpenOptions" diff --git a/src/arch/wasm/CodeGen.zig b/src/arch/wasm/CodeGen.zig index 1f7dd85f47..92b1bf4498 100644 --- a/src/arch/wasm/CodeGen.zig +++ b/src/arch/wasm/CodeGen.zig @@ -1235,15 +1235,15 @@ fn airRetPtr(self: *Self, inst: Air.Inst.Index) InnerError!WValue { // local, containing the offset to the stack position const local = try self.allocLocal(Type.initTag(.i32)); // always pointer therefore i32 try self.moveStack(@intCast(u32, abi_size), local.local); - return local; } fn airRetLoad(self: *Self, inst: Air.Inst.Index) InnerError!WValue { const un_op = self.air.instructions.items(.data)[inst].un_op; const operand = self.resolveInst(un_op); - const result = try self.load(operand, self.air.typeOf(un_op), 0); - try self.addLabel(.local_get, result.local); + + const result = try self.load(operand, self.air.typeOf(un_op).childType(), 0); + try self.emitWValue(result); try self.restoreStackPointer(); try self.addTag(.@"return"); return .none; @@ -1301,8 +1301,11 @@ fn airCall(self: *Self, inst: Air.Inst.Index) InnerError!WValue { // so load its value onto the stack std.debug.assert(ty.zigTypeTag() == .Pointer); const operand = self.resolveInst(pl_op.operand); - try self.emitWValue(operand); - const result = try self.load(operand, fn_ty, operand.local_with_offset.offset); + const offset = switch (operand) { + .local_with_offset => |with_offset| with_offset.offset, + else => @as(u32, 0), + }; + const result = try self.load(operand, fn_ty, offset); try self.addLabel(.local_get, result.local); var fn_type = try self.genFunctype(fn_ty); @@ -1335,7 +1338,6 @@ fn airAlloc(self: *Self, inst: Air.Inst.Index) InnerError!WValue { // local, containing the offset to the stack position const local = try self.allocLocal(Type.initTag(.i32)); // always pointer therefore i32 try self.moveStack(@intCast(u32, abi_size), local.local); - return local; } @@ -1470,6 +1472,8 @@ fn airLoad(self: *Self, inst: Air.Inst.Index) InnerError!WValue { const operand = self.resolveInst(ty_op.operand); const ty = self.air.getRefType(ty_op.ty); + if (!ty.hasCodeGenBits()) return WValue{ .none = {} }; + return switch (ty.zigTypeTag()) { .Struct, .ErrorUnion, .Optional, .Pointer => operand, // pass as pointer else => switch (operand) { @@ -1632,7 +1636,14 @@ fn emitConstant(self: *Self, val: Value, ty: Type) InnerError!void { } else if (val.castTag(.decl_ref)) |payload| { const decl = payload.data; decl.alive = true; - try self.addLabel(.memory_address, decl.link.wasm.sym_index); + // Function pointers use a table index, rather than a memory address + if (decl.ty.zigTypeTag() == .Fn) { + const target_sym_index = decl.link.wasm.sym_index; + try self.bin_file.addTableFunction(target_sym_index); + try self.addLabel(.function_index, target_sym_index); + } else { + try self.addLabel(.memory_address, decl.link.wasm.sym_index); + } } else return self.fail("Wasm TODO: emitConstant for other const pointer tag {s}", .{val.tag()}); }, .Void => {}, @@ -1873,7 +1884,7 @@ fn airCmp(self: *Self, inst: Air.Inst.Index, op: std.math.CompareOperator) Inner }); try self.addTag(Mir.Inst.Tag.fromOpcode(opcode)); - const cmp_tmp = try self.allocLocal(lhs_ty); + const cmp_tmp = try self.allocLocal(Type.initTag(.i32)); // bool is always i32 try self.addLabel(.local_set, cmp_tmp.local); return cmp_tmp; } @@ -2200,20 +2211,26 @@ fn airIntcast(self: *Self, inst: Air.Inst.Index) InnerError!WValue { const operand = self.resolveInst(ty_op.operand); const ref_ty = self.air.typeOf(ty_op.operand); const ref_info = ref_ty.intInfo(self.target); - const op_bits = ref_info.bits; - const wanted_bits = ty.intInfo(self.target).bits; + const wanted_info = ty.intInfo(self.target); + + const op_bits = toWasmIntBits(ref_info.bits) orelse + return self.fail("TODO: Wasm intcast integer types of bitsize: {d}", .{ref_info.bits}); + const wanted_bits = toWasmIntBits(wanted_info.bits) orelse + return self.fail("TODO: Wasm intcast integer types of bitsize: {d}", .{wanted_info.bits}); - if (op_bits > 32 and wanted_bits <= 32) { + // hot path + if (op_bits == wanted_bits) return operand; + + if (op_bits > 32 and wanted_bits == 32) { try self.emitWValue(operand); try self.addTag(.i32_wrap_i64); - } else if (op_bits <= 32 and wanted_bits > 32) { + } else if (op_bits == 32 and wanted_bits > 32) { try self.emitWValue(operand); try self.addTag(switch (ref_info.signedness) { .signed => .i64_extend_i32_s, .unsigned => .i64_extend_i32_u, }); - } else return operand; - + } const result = try self.allocLocal(ty); try self.addLabel(.local_set, result.local); return result; diff --git a/src/arch/wasm/Emit.zig b/src/arch/wasm/Emit.zig index 63080075d6..346ba1b6a0 100644 --- a/src/arch/wasm/Emit.zig +++ b/src/arch/wasm/Emit.zig @@ -50,6 +50,7 @@ pub fn emitMir(emit: *Emit) InnerError!void { .call_indirect => try emit.emitCallIndirect(inst), .global_get => try emit.emitGlobal(tag, inst), .global_set => try emit.emitGlobal(tag, inst), + .function_index => try emit.emitFunctionIndex(inst), .memory_address => try emit.emitMemAddress(inst), // immediates @@ -240,7 +241,7 @@ fn emitImm64(emit: *Emit, inst: Mir.Inst.Index) !void { const extra_index = emit.mir.instructions.items(.data)[inst].payload; const value = emit.mir.extraData(Mir.Imm64, extra_index); try emit.code.append(std.wasm.opcode(.i64_const)); - try leb128.writeULEB128(emit.code.writer(), value.data.toU64()); + try leb128.writeILEB128(emit.code.writer(), @bitCast(i64, value.data.toU64())); } fn emitFloat32(emit: *Emit, inst: Mir.Inst.Index) !void { @@ -289,6 +290,21 @@ fn emitCallIndirect(emit: *Emit, inst: Mir.Inst.Index) !void { try leb128.writeULEB128(emit.code.writer(), label); } +fn emitFunctionIndex(emit: *Emit, inst: Mir.Inst.Index) !void { + const symbol_index = emit.mir.instructions.items(.data)[inst].label; + try emit.code.append(std.wasm.opcode(.i32_const)); + const index_offset = emit.offset(); + var buf: [5]u8 = undefined; + leb128.writeUnsignedFixed(5, &buf, symbol_index); + try emit.code.appendSlice(&buf); + + try emit.decl.link.wasm.relocs.append(emit.bin_file.allocator, .{ + .offset = index_offset, + .index = symbol_index, + .relocation_type = .R_WASM_TABLE_INDEX_SLEB, + }); +} + fn emitMemAddress(emit: *Emit, inst: Mir.Inst.Index) !void { const symbol_index = emit.mir.instructions.items(.data)[inst].label; try emit.code.append(std.wasm.opcode(.i32_const)); diff --git a/src/arch/wasm/Mir.zig b/src/arch/wasm/Mir.zig index a47fed5b9f..c2d6e919b0 100644 --- a/src/arch/wasm/Mir.zig +++ b/src/arch/wasm/Mir.zig @@ -373,11 +373,17 @@ pub const Inst = struct { i64_extend16_s = 0xC3, /// Uses `tag` i64_extend32_s = 0xC4, + /// Contains a symbol to a function pointer + /// uses `label` + /// + /// Note: This uses `0xFE` as value as it is unused and not reserved + /// by the wasm specification, making it safe to use. + function_index = 0xFE, /// Contains a symbol to a memory address /// Uses `label` /// - /// Note: This uses `0xFF` as value as it is unused and not-reserved - /// by the wasm specification, making it safe to use + /// Note: This uses `0xFF` as value as it is unused and not reserved + /// by the wasm specification, making it safe to use. memory_address = 0xFF, /// From a given wasm opcode, returns a MIR tag. diff --git a/test/behavior.zig b/test/behavior.zig index 923c54b400..b23aa6979e 100644 --- a/test/behavior.zig +++ b/test/behavior.zig @@ -1,198 +1,202 @@ const builtin = @import("builtin"); test { - // Tests that pass for stage1, stage2, and the C backend. - _ = @import("behavior/align.zig"); + // Tests that pass for stage1, stage2, the C -and wasm backend. _ = @import("behavior/basic.zig"); _ = @import("behavior/bitcast.zig"); - _ = @import("behavior/bool.zig"); _ = @import("behavior/bugs/624.zig"); _ = @import("behavior/bugs/655.zig"); _ = @import("behavior/bugs/679.zig"); - _ = @import("behavior/bugs/704.zig"); _ = @import("behavior/bugs/1111.zig"); _ = @import("behavior/bugs/1486.zig"); _ = @import("behavior/bugs/2346.zig"); - _ = @import("behavior/bugs/2692.zig"); - _ = @import("behavior/bugs/2889.zig"); - _ = @import("behavior/bugs/3046.zig"); - _ = @import("behavior/bugs/3586.zig"); - _ = @import("behavior/bugs/4560.zig"); - _ = @import("behavior/bugs/4769_a.zig"); - _ = @import("behavior/bugs/4769_b.zig"); - _ = @import("behavior/bugs/4954.zig"); _ = @import("behavior/bugs/6850.zig"); - _ = @import("behavior/byval_arg_var.zig"); - _ = @import("behavior/call.zig"); - _ = @import("behavior/cast.zig"); - _ = @import("behavior/defer.zig"); _ = @import("behavior/enum.zig"); - _ = @import("behavior/error.zig"); - _ = @import("behavior/fn_in_struct_in_comptime.zig"); - _ = @import("behavior/generics.zig"); _ = @import("behavior/hasdecl.zig"); _ = @import("behavior/hasfield.zig"); - _ = @import("behavior/if.zig"); _ = @import("behavior/import.zig"); - _ = @import("behavior/incomplete_struct_param_tld.zig"); - _ = @import("behavior/int128.zig"); - _ = @import("behavior/inttoptr.zig"); - _ = @import("behavior/member_func.zig"); - _ = @import("behavior/null.zig"); - _ = @import("behavior/optional.zig"); - _ = @import("behavior/pointers.zig"); - _ = @import("behavior/ptrcast.zig"); _ = @import("behavior/pub_enum.zig"); - _ = @import("behavior/ref_var_in_if_after_if_2nd_switch_prong.zig"); _ = @import("behavior/slice_sentinel_comptime.zig"); - _ = @import("behavior/struct.zig"); - _ = @import("behavior/this.zig"); - _ = @import("behavior/translate_c_macros.zig"); _ = @import("behavior/truncate.zig"); - _ = @import("behavior/underscore.zig"); _ = @import("behavior/usingnamespace.zig"); - _ = @import("behavior/while.zig"); - if (builtin.object_format != .c) { - // Tests that pass for stage1 and stage2 but not the C backend. - _ = @import("behavior/align_llvm.zig"); - _ = @import("behavior/alignof.zig"); - _ = @import("behavior/array.zig"); - _ = @import("behavior/atomics.zig"); - _ = @import("behavior/basic_llvm.zig"); - _ = @import("behavior/bugs/394.zig"); - _ = @import("behavior/bugs/656.zig"); - _ = @import("behavior/bugs/1277.zig"); - _ = @import("behavior/bugs/1381.zig"); - _ = @import("behavior/bugs/1500.zig"); - _ = @import("behavior/bugs/1741.zig"); - _ = @import("behavior/bugs/2006.zig"); - _ = @import("behavior/bugs/2578.zig"); - _ = @import("behavior/bugs/3007.zig"); - _ = @import("behavior/bugs/3112.zig"); - _ = @import("behavior/bugs/7250.zig"); - _ = @import("behavior/cast_llvm.zig"); - _ = @import("behavior/eval.zig"); - _ = @import("behavior/floatop.zig"); - _ = @import("behavior/fn.zig"); - _ = @import("behavior/for.zig"); - _ = @import("behavior/generics_llvm.zig"); - _ = @import("behavior/math.zig"); - _ = @import("behavior/maximum_minimum.zig"); - _ = @import("behavior/namespace_depends_on_compile_var.zig"); - _ = @import("behavior/null_llvm.zig"); - _ = @import("behavior/optional_llvm.zig"); - _ = @import("behavior/popcount.zig"); - _ = @import("behavior/saturating_arithmetic.zig"); - _ = @import("behavior/sizeof_and_typeof.zig"); - _ = @import("behavior/slice.zig"); - _ = @import("behavior/struct_llvm.zig"); - _ = @import("behavior/switch.zig"); - _ = @import("behavior/undefined.zig"); - _ = @import("behavior/union.zig"); - _ = @import("behavior/void.zig"); - _ = @import("behavior/widening.zig"); + // Tests that pass for stage1, stage2 and the C backend, but not for the wasm backend + if (!builtin.zig_is_stage2 or (builtin.zig_is_stage2 and builtin.stage2_arch != .wasm32)) { + _ = @import("behavior/align.zig"); + _ = @import("behavior/bool.zig"); + _ = @import("behavior/bugs/704.zig"); + _ = @import("behavior/bugs/2692.zig"); + _ = @import("behavior/bugs/2889.zig"); + _ = @import("behavior/bugs/3046.zig"); + _ = @import("behavior/bugs/3586.zig"); + _ = @import("behavior/bugs/4560.zig"); + _ = @import("behavior/bugs/4769_a.zig"); + _ = @import("behavior/bugs/4769_b.zig"); + _ = @import("behavior/bugs/4954.zig"); + _ = @import("behavior/byval_arg_var.zig"); + _ = @import("behavior/call.zig"); + _ = @import("behavior/cast.zig"); + _ = @import("behavior/defer.zig"); + _ = @import("behavior/error.zig"); + _ = @import("behavior/fn_in_struct_in_comptime.zig"); + _ = @import("behavior/generics.zig"); + _ = @import("behavior/if.zig"); + _ = @import("behavior/incomplete_struct_param_tld.zig"); + _ = @import("behavior/int128.zig"); + _ = @import("behavior/inttoptr.zig"); + _ = @import("behavior/member_func.zig"); + _ = @import("behavior/null.zig"); + _ = @import("behavior/optional.zig"); + _ = @import("behavior/pointers.zig"); + _ = @import("behavior/ptrcast.zig"); + _ = @import("behavior/ref_var_in_if_after_if_2nd_switch_prong.zig"); + _ = @import("behavior/struct.zig"); + _ = @import("behavior/this.zig"); + _ = @import("behavior/translate_c_macros.zig"); + _ = @import("behavior/underscore.zig"); + _ = @import("behavior/while.zig"); - if (builtin.zig_is_stage2) { - // When all comptime_memory.zig tests pass, #9646 can be closed. - // _ = @import("behavior/comptime_memory.zig"); - _ = @import("behavior/slice_stage2.zig"); - } else { - _ = @import("behavior/align_stage1.zig"); - _ = @import("behavior/array_stage1.zig"); - if (builtin.os.tag != .wasi) { - _ = @import("behavior/asm.zig"); - _ = @import("behavior/async_fn.zig"); - } - _ = @import("behavior/await_struct.zig"); - _ = @import("behavior/bit_shifting.zig"); - _ = @import("behavior/bitcast_stage1.zig"); - _ = @import("behavior/bitreverse.zig"); - _ = @import("behavior/bugs/421.zig"); - _ = @import("behavior/bugs/529.zig"); - _ = @import("behavior/bugs/718.zig"); - _ = @import("behavior/bugs/726.zig"); - _ = @import("behavior/bugs/828.zig"); - _ = @import("behavior/bugs/920.zig"); - _ = @import("behavior/bugs/1025.zig"); - _ = @import("behavior/bugs/1076.zig"); - _ = @import("behavior/bugs/1120.zig"); - _ = @import("behavior/bugs/1310.zig"); - _ = @import("behavior/bugs/1322.zig"); - _ = @import("behavior/bugs/1421.zig"); - _ = @import("behavior/bugs/1442.zig"); - _ = @import("behavior/bugs/1607.zig"); - _ = @import("behavior/bugs/1735.zig"); - _ = @import("behavior/bugs/1851.zig"); - _ = @import("behavior/bugs/1914.zig"); - _ = @import("behavior/bugs/2114.zig"); - _ = @import("behavior/bugs/3367.zig"); - _ = @import("behavior/bugs/3384.zig"); - _ = @import("behavior/bugs/3742.zig"); - _ = @import("behavior/bugs/3779.zig"); - _ = @import("behavior/bugs/4328.zig"); - _ = @import("behavior/bugs/5398.zig"); - _ = @import("behavior/bugs/5413.zig"); - _ = @import("behavior/bugs/5474.zig"); - _ = @import("behavior/bugs/5487.zig"); - _ = @import("behavior/bugs/6456.zig"); - _ = @import("behavior/bugs/6781.zig"); - _ = @import("behavior/bugs/7003.zig"); - _ = @import("behavior/bugs/7027.zig"); - _ = @import("behavior/bugs/7047.zig"); - _ = @import("behavior/bugs/9584.zig"); - _ = @import("behavior/bugs/9967.zig"); - _ = @import("behavior/bugs/10147.zig"); - _ = @import("behavior/byteswap.zig"); - _ = @import("behavior/call_stage1.zig"); - _ = @import("behavior/cast_stage1.zig"); - _ = @import("behavior/const_slice_child.zig"); - _ = @import("behavior/defer_stage1.zig"); - _ = @import("behavior/enum_stage1.zig"); - _ = @import("behavior/error_stage1.zig"); - _ = @import("behavior/eval_stage1.zig"); - _ = @import("behavior/field_parent_ptr.zig"); - _ = @import("behavior/floatop_stage1.zig"); - _ = @import("behavior/fn_stage1.zig"); - _ = @import("behavior/fn_delegation.zig"); - _ = @import("behavior/for_stage1.zig"); - _ = @import("behavior/if_stage1.zig"); - _ = @import("behavior/ir_block_deps.zig"); - _ = @import("behavior/math_stage1.zig"); - _ = @import("behavior/merge_error_sets.zig"); - _ = @import("behavior/misc.zig"); - _ = @import("behavior/muladd.zig"); - _ = @import("behavior/null_stage1.zig"); - _ = @import("behavior/optional_stage1.zig"); - _ = @import("behavior/pointers_stage1.zig"); - _ = @import("behavior/popcount_stage1.zig"); - _ = @import("behavior/ptrcast_stage1.zig"); - _ = @import("behavior/reflection.zig"); - _ = @import("behavior/select.zig"); - _ = @import("behavior/shuffle.zig"); - _ = @import("behavior/sizeof_and_typeof_stage1.zig"); - _ = @import("behavior/slice_stage1.zig"); - _ = @import("behavior/struct_contains_null_ptr_itself.zig"); - _ = @import("behavior/struct_contains_slice_of_itself.zig"); - _ = @import("behavior/struct_stage1.zig"); - _ = @import("behavior/switch_prong_err_enum.zig"); - _ = @import("behavior/switch_prong_implicit_cast.zig"); - _ = @import("behavior/switch_stage1.zig"); - _ = @import("behavior/try.zig"); - _ = @import("behavior/tuple.zig"); - _ = @import("behavior/type.zig"); - _ = @import("behavior/type_info.zig"); - _ = @import("behavior/typename.zig"); - _ = @import("behavior/union_stage1.zig"); - _ = @import("behavior/union_with_members.zig"); - _ = @import("behavior/var_args.zig"); - _ = @import("behavior/vector.zig"); - if (builtin.target.cpu.arch == .wasm32) { - _ = @import("behavior/wasm.zig"); + if (builtin.object_format != .c) { + // Tests that pass for stage1 and stage2 but not the C backend and wasm backend. + _ = @import("behavior/align_llvm.zig"); + _ = @import("behavior/alignof.zig"); + _ = @import("behavior/array.zig"); + _ = @import("behavior/atomics.zig"); + _ = @import("behavior/basic_llvm.zig"); + _ = @import("behavior/bugs/394.zig"); + _ = @import("behavior/bugs/656.zig"); + _ = @import("behavior/bugs/1277.zig"); + _ = @import("behavior/bugs/1381.zig"); + _ = @import("behavior/bugs/1500.zig"); + _ = @import("behavior/bugs/1741.zig"); + _ = @import("behavior/bugs/2006.zig"); + _ = @import("behavior/bugs/2578.zig"); + _ = @import("behavior/bugs/3007.zig"); + _ = @import("behavior/bugs/3112.zig"); + _ = @import("behavior/bugs/7250.zig"); + _ = @import("behavior/cast_llvm.zig"); + _ = @import("behavior/eval.zig"); + _ = @import("behavior/floatop.zig"); + _ = @import("behavior/fn.zig"); + _ = @import("behavior/for.zig"); + _ = @import("behavior/generics_llvm.zig"); + _ = @import("behavior/math.zig"); + _ = @import("behavior/maximum_minimum.zig"); + _ = @import("behavior/namespace_depends_on_compile_var.zig"); + _ = @import("behavior/null_llvm.zig"); + _ = @import("behavior/optional_llvm.zig"); + _ = @import("behavior/popcount.zig"); + _ = @import("behavior/saturating_arithmetic.zig"); + _ = @import("behavior/sizeof_and_typeof.zig"); + _ = @import("behavior/slice.zig"); + _ = @import("behavior/struct_llvm.zig"); + _ = @import("behavior/switch.zig"); + _ = @import("behavior/undefined.zig"); + _ = @import("behavior/union.zig"); + _ = @import("behavior/void.zig"); + _ = @import("behavior/widening.zig"); + + if (builtin.zig_is_stage2) { + // When all comptime_memory.zig tests pass, #9646 can be closed. + // _ = @import("behavior/comptime_memory.zig"); + _ = @import("behavior/slice_stage2.zig"); + } else { + _ = @import("behavior/align_stage1.zig"); + _ = @import("behavior/array_stage1.zig"); + if (builtin.os.tag != .wasi) { + _ = @import("behavior/asm.zig"); + _ = @import("behavior/async_fn.zig"); + } + _ = @import("behavior/await_struct.zig"); + _ = @import("behavior/bit_shifting.zig"); + _ = @import("behavior/bitcast_stage1.zig"); + _ = @import("behavior/bitreverse.zig"); + _ = @import("behavior/bugs/421.zig"); + _ = @import("behavior/bugs/529.zig"); + _ = @import("behavior/bugs/718.zig"); + _ = @import("behavior/bugs/726.zig"); + _ = @import("behavior/bugs/828.zig"); + _ = @import("behavior/bugs/920.zig"); + _ = @import("behavior/bugs/1025.zig"); + _ = @import("behavior/bugs/1076.zig"); + _ = @import("behavior/bugs/1120.zig"); + _ = @import("behavior/bugs/1310.zig"); + _ = @import("behavior/bugs/1322.zig"); + _ = @import("behavior/bugs/1421.zig"); + _ = @import("behavior/bugs/1442.zig"); + _ = @import("behavior/bugs/1607.zig"); + _ = @import("behavior/bugs/1735.zig"); + _ = @import("behavior/bugs/1851.zig"); + _ = @import("behavior/bugs/1914.zig"); + _ = @import("behavior/bugs/2114.zig"); + _ = @import("behavior/bugs/3367.zig"); + _ = @import("behavior/bugs/3384.zig"); + _ = @import("behavior/bugs/3742.zig"); + _ = @import("behavior/bugs/3779.zig"); + _ = @import("behavior/bugs/4328.zig"); + _ = @import("behavior/bugs/5398.zig"); + _ = @import("behavior/bugs/5413.zig"); + _ = @import("behavior/bugs/5474.zig"); + _ = @import("behavior/bugs/5487.zig"); + _ = @import("behavior/bugs/6456.zig"); + _ = @import("behavior/bugs/6781.zig"); + _ = @import("behavior/bugs/7003.zig"); + _ = @import("behavior/bugs/7027.zig"); + _ = @import("behavior/bugs/7047.zig"); + _ = @import("behavior/bugs/9584.zig"); + _ = @import("behavior/bugs/9967.zig"); + _ = @import("behavior/bugs/10147.zig"); + _ = @import("behavior/byteswap.zig"); + _ = @import("behavior/call_stage1.zig"); + _ = @import("behavior/cast_stage1.zig"); + _ = @import("behavior/const_slice_child.zig"); + _ = @import("behavior/defer_stage1.zig"); + _ = @import("behavior/enum_stage1.zig"); + _ = @import("behavior/error_stage1.zig"); + _ = @import("behavior/eval_stage1.zig"); + _ = @import("behavior/field_parent_ptr.zig"); + _ = @import("behavior/floatop_stage1.zig"); + _ = @import("behavior/fn_stage1.zig"); + _ = @import("behavior/fn_delegation.zig"); + _ = @import("behavior/for_stage1.zig"); + _ = @import("behavior/if_stage1.zig"); + _ = @import("behavior/ir_block_deps.zig"); + _ = @import("behavior/math_stage1.zig"); + _ = @import("behavior/merge_error_sets.zig"); + _ = @import("behavior/misc.zig"); + _ = @import("behavior/muladd.zig"); + _ = @import("behavior/null_stage1.zig"); + _ = @import("behavior/optional_stage1.zig"); + _ = @import("behavior/pointers_stage1.zig"); + _ = @import("behavior/popcount_stage1.zig"); + _ = @import("behavior/ptrcast_stage1.zig"); + _ = @import("behavior/reflection.zig"); + _ = @import("behavior/select.zig"); + _ = @import("behavior/shuffle.zig"); + _ = @import("behavior/sizeof_and_typeof_stage1.zig"); + _ = @import("behavior/slice_stage1.zig"); + _ = @import("behavior/struct_contains_null_ptr_itself.zig"); + _ = @import("behavior/struct_contains_slice_of_itself.zig"); + _ = @import("behavior/struct_stage1.zig"); + _ = @import("behavior/switch_prong_err_enum.zig"); + _ = @import("behavior/switch_prong_implicit_cast.zig"); + _ = @import("behavior/switch_stage1.zig"); + _ = @import("behavior/try.zig"); + _ = @import("behavior/tuple.zig"); + _ = @import("behavior/type.zig"); + _ = @import("behavior/type_info.zig"); + _ = @import("behavior/typename.zig"); + _ = @import("behavior/union_stage1.zig"); + _ = @import("behavior/union_with_members.zig"); + _ = @import("behavior/var_args.zig"); + _ = @import("behavior/vector.zig"); + if (builtin.target.cpu.arch == .wasm32) { + _ = @import("behavior/wasm.zig"); + } + _ = @import("behavior/while_stage1.zig"); + _ = @import("behavior/src.zig"); + _ = @import("behavior/translate_c_macros_stage1.zig"); } - _ = @import("behavior/while_stage1.zig"); - _ = @import("behavior/src.zig"); - _ = @import("behavior/translate_c_macros_stage1.zig"); } } } |
