When importing a trivial destructor from C++, produce a no_op builtin. (#6531)

This avoids us trying to produce a reference to the C++ destructor,
which Clang won't emit because it believes it's unnecessary. This
previously led to link errors.

Fixe #6502.
This commit is contained in:
Richard Smith
2025-12-23 05:30:29 +00:00
committed by GitHub
parent 29018f38a6
commit 531d063596
8 changed files with 81 additions and 47 deletions
@@ -114,12 +114,9 @@ fn AccessD(d: Cpp.D) -> i32 {
// CHECK:STDOUT: %_.var = alloca [40 x i8], align 1, !dbg !10
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %_.var), !dbg !10
// CHECK:STDOUT: call void @_ZN1DC1Ev.carbon_thunk(ptr %_.var), !dbg !11
// CHECK:STDOUT: call void @_ZN1DD1Ev(ptr %_.var), !dbg !10
// CHECK:STDOUT: ret void, !dbg !12
// CHECK:STDOUT: }
// CHECK:STDOUT:
// CHECK:STDOUT: declare void @_ZN1DD1Ev(ptr)
// CHECK:STDOUT:
// CHECK:STDOUT: ; Function Attrs: nounwind
// CHECK:STDOUT: define i32 @_CAccessD.Main(ptr %d) #0 !dbg !13 {
// CHECK:STDOUT: entry: