diff --git a/src/Sema.zig b/src/Sema.zig index e0bbbb5e5d..97d4c239c4 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -9785,6 +9785,8 @@ fn finishFunc( const zcu = pt.zcu; const ip = &zcu.intern_pool; const gpa = sema.gpa; + const target = zcu.getTarget(); + const backend = target_util.zigBackend(target, zcu.comp.config.use_llvm); const return_type: Type = if (opt_func_index == .none or ret_poison) bare_return_type @@ -9911,13 +9913,11 @@ fn finishFunc( }), } - if (!is_generic and sema.wantErrorReturnTracing(return_type)) { + if (backend == .stage2_llvm and !is_generic and sema.wantErrorReturnTracing(return_type)) { // Make sure that StackTrace's fields are resolved so that the backend can // lower this fn type. const unresolved_stack_trace_ty = try sema.getBuiltinType(block.nodeOffset(.zero), .StackTrace); try unresolved_stack_trace_ty.resolveFields(pt); - - if (zcu.stack_trace_type == .none) zcu.stack_trace_type = unresolved_stack_trace_ty.toIntern(); } return Air.internedToRef(if (opt_func_index != .none) opt_func_index else func_ty); diff --git a/src/Zcu.zig b/src/Zcu.zig index 03c09c2b70..6d07477edc 100644 --- a/src/Zcu.zig +++ b/src/Zcu.zig @@ -308,7 +308,6 @@ free_type_references: std.ArrayListUnmanaged(u32) = .empty, /// Populated by analysis of `AnalUnit.wrap(.{ .memoized_state = s })`, where `s` depends on the element. builtin_decl_values: BuiltinDecl.Memoized = .initFill(.none), -stack_trace_type: InternPool.Index = .none, incremental_debug_state: if (build_options.enable_debug_extensions) IncrementalDebugState else void = if (build_options.enable_debug_extensions) .init else {}, diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index 656c2eb69d..9965b50ba4 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -2596,7 +2596,8 @@ pub const Object = struct { } if (fn_info.cc == .auto and zcu.comp.config.any_error_tracing) { - const ptr_ty = try pt.ptrType(.{ .child = zcu.stack_trace_type }); + const stack_trace_ty = zcu.builtin_decl_values.get(.StackTrace); + const ptr_ty = try pt.ptrType(.{ .child = stack_trace_ty }); debug_param_types.appendAssumeCapacity(try o.lowerDebugType(pt, ptr_ty)); } @@ -3508,7 +3509,8 @@ pub const Object = struct { } if (fn_info.cc == .auto and zcu.comp.config.any_error_tracing) { - const ptr_ty = try pt.ptrType(.{ .child = zcu.stack_trace_type }); + const stack_trace_ty = zcu.builtin_decl_values.get(.StackTrace); + const ptr_ty = try pt.ptrType(.{ .child = stack_trace_ty }); try llvm_params.append(o.gpa, try o.lowerType(pt, ptr_ty)); }