mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-05 18:21:16 +01:00
Classify classes with no struct fields as trivially destructible (#7846)
This commit is contained in:
+18
-40
@@ -168,31 +168,17 @@ impl C(B) as I {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !79 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !79 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !81
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !83 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core"(ptr %self) #0 !dbg !83 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !85
|
||||
// CHECK:STDOUT: ret void, !dbg !85
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.5a23cc09585c55d2:core.Destroy.Core"(ptr %self) #0 !dbg !87 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !89
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core"(ptr %self) #0 !dbg !91 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.5a23cc09585c55d2:core.Destroy.Core"(ptr %self), !dbg !93
|
||||
// CHECK:STDOUT: ret void, !dbg !93
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
|
||||
// CHECK:STDOUT: declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #1
|
||||
// CHECK:STDOUT:
|
||||
@@ -241,52 +227,44 @@ impl C(B) as I {
|
||||
// CHECK:STDOUT: !76 = !DILocalVariable(arg: 1, scope: !75, type: !21)
|
||||
// CHECK:STDOUT: !77 = !DILocation(line: 22, column: 3, scope: !75)
|
||||
// CHECK:STDOUT: !78 = !{!76}
|
||||
// CHECK:STDOUT: !79 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !40, line: 22, type: !47, spFlags: DISPFlagDefinition, unit: !41, retainedNodes: !82)
|
||||
// CHECK:STDOUT: !79 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !40, line: 22, type: !47, spFlags: DISPFlagDefinition, unit: !41, retainedNodes: !82)
|
||||
// CHECK:STDOUT: !80 = !DILocalVariable(arg: 1, scope: !79, type: !21)
|
||||
// CHECK:STDOUT: !81 = !DILocation(line: 22, column: 3, scope: !79)
|
||||
// CHECK:STDOUT: !82 = !{!80}
|
||||
// CHECK:STDOUT: !83 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !40, line: 22, type: !47, spFlags: DISPFlagDefinition, unit: !41, retainedNodes: !86)
|
||||
// CHECK:STDOUT: !83 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core", scope: null, file: !40, line: 21, type: !47, spFlags: DISPFlagDefinition, unit: !41, retainedNodes: !86)
|
||||
// CHECK:STDOUT: !84 = !DILocalVariable(arg: 1, scope: !83, type: !21)
|
||||
// CHECK:STDOUT: !85 = !DILocation(line: 22, column: 3, scope: !83)
|
||||
// CHECK:STDOUT: !85 = !DILocation(line: 21, column: 3, scope: !83)
|
||||
// CHECK:STDOUT: !86 = !{!84}
|
||||
// CHECK:STDOUT: !87 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.5a23cc09585c55d2:core.Destroy.Core", scope: null, file: !40, line: 21, type: !47, spFlags: DISPFlagDefinition, unit: !41, retainedNodes: !90)
|
||||
// CHECK:STDOUT: !88 = !DILocalVariable(arg: 1, scope: !87, type: !21)
|
||||
// CHECK:STDOUT: !89 = !DILocation(line: 21, column: 3, scope: !87)
|
||||
// CHECK:STDOUT: !90 = !{!88}
|
||||
// CHECK:STDOUT: !91 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core", scope: null, file: !40, line: 21, type: !47, spFlags: DISPFlagDefinition, unit: !41, retainedNodes: !94)
|
||||
// CHECK:STDOUT: !92 = !DILocalVariable(arg: 1, scope: !91, type: !21)
|
||||
// CHECK:STDOUT: !93 = !DILocation(line: 21, column: 3, scope: !91)
|
||||
// CHECK:STDOUT: !94 = !{!92}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; ---
|
||||
// CHECK:STDOUT: ; ModuleID = 'generic_class_impls.carbon'
|
||||
// CHECK:STDOUT: source_filename = "generic_class_impls.carbon"
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define void @"_CF.C.bd4fb75a414fe858.Main:I.Main"() #0 !dbg !99 {
|
||||
// CHECK:STDOUT: define void @"_CF.C.bd4fb75a414fe858.Main:I.Main"() #0 !dbg !91 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !100
|
||||
// CHECK:STDOUT: ret void, !dbg !92
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define void @"_CF.C.a6a60dfee2d7d273.Main:I.Main"() #0 !dbg !101 {
|
||||
// CHECK:STDOUT: define void @"_CF.C.a6a60dfee2d7d273.Main:I.Main"() #0 !dbg !93 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !102
|
||||
// CHECK:STDOUT: ret void, !dbg !94
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: attributes #0 = { nounwind }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !llvm.dbg.cu = !{!96}
|
||||
// CHECK:STDOUT: !llvm.dbg.cu = !{!88}
|
||||
// CHECK:STDOUT: !llvm.module.flags = !{!2, !3}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !2 = !{i32 7, !"Dwarf Version", i32 5}
|
||||
// CHECK:STDOUT: !3 = !{i32 2, !"Debug Info Version", i32 3}
|
||||
// CHECK:STDOUT: !95 = !DIFile(filename: "generic_class_impls.carbon", directory: "")
|
||||
// CHECK:STDOUT: !96 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !95, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !97 = !{null}
|
||||
// CHECK:STDOUT: !98 = !DISubroutineType(types: !97)
|
||||
// CHECK:STDOUT: !99 = distinct !DISubprogram(name: "F", linkageName: "_CF.C.bd4fb75a414fe858.Main:I.Main", scope: null, file: !95, line: 14, type: !98, spFlags: DISPFlagDefinition, unit: !96)
|
||||
// CHECK:STDOUT: !100 = !DILocation(line: 14, column: 3, scope: !99)
|
||||
// CHECK:STDOUT: !101 = distinct !DISubprogram(name: "F", linkageName: "_CF.C.a6a60dfee2d7d273.Main:I.Main", scope: null, file: !95, line: 18, type: !98, spFlags: DISPFlagDefinition, unit: !96)
|
||||
// CHECK:STDOUT: !102 = !DILocation(line: 18, column: 3, scope: !101)
|
||||
// CHECK:STDOUT: !87 = !DIFile(filename: "generic_class_impls.carbon", directory: "")
|
||||
// CHECK:STDOUT: !88 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !87, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !89 = !{null}
|
||||
// CHECK:STDOUT: !90 = !DISubroutineType(types: !89)
|
||||
// CHECK:STDOUT: !91 = distinct !DISubprogram(name: "F", linkageName: "_CF.C.bd4fb75a414fe858.Main:I.Main", scope: null, file: !87, line: 14, type: !90, spFlags: DISPFlagDefinition, unit: !88)
|
||||
// CHECK:STDOUT: !92 = !DILocation(line: 14, column: 3, scope: !91)
|
||||
// CHECK:STDOUT: !93 = distinct !DISubprogram(name: "F", linkageName: "_CF.C.a6a60dfee2d7d273.Main:I.Main", scope: null, file: !87, line: 18, type: !90, spFlags: DISPFlagDefinition, unit: !88)
|
||||
// CHECK:STDOUT: !94 = !DILocation(line: 18, column: 3, scope: !93)
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+21
-32
@@ -118,35 +118,28 @@ fn F(d: D(i32)) -> i32* {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.14de9dd8f7d35649:core.Destroy.Core"(ptr %self) #0 !dbg !33 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.14de9dd8f7d35649:core.Destroy.Core"(ptr %self) #0 !dbg !33 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !35
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.14de9dd8f7d35649:core.Destroy.Core"(ptr %self) #0 !dbg !37 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.14de9dd8f7d35649:core.Destroy.Core"(ptr %self), !dbg !39
|
||||
// CHECK:STDOUT: ret void, !dbg !39
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
|
||||
// CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define linkonce_odr void @"_CGetI.D.eb057aa32837c84e.Main:I.Main.84588f41d61dafba"(ptr sret({}) %return, ptr %self) #0 !dbg !41 {
|
||||
// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %return, ptr align 1 @C.val.207.anon, i64 0, i1 false), !dbg !46
|
||||
// CHECK:STDOUT: ret void, !dbg !46
|
||||
// CHECK:STDOUT: define linkonce_odr void @"_CGetI.D.eb057aa32837c84e.Main:I.Main.84588f41d61dafba"(ptr sret({}) %return, ptr %self) #0 !dbg !37 {
|
||||
// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %return, ptr align 1 @C.val.207.anon, i64 0, i1 false), !dbg !42
|
||||
// CHECK:STDOUT: ret void, !dbg !42
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define linkonce_odr ptr @_CGetC.C.Main.aac7339a58c49d52(ptr %self) #0 !dbg !48 {
|
||||
// CHECK:STDOUT: %1 = alloca ptr, align 8, !dbg !53
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %1), !dbg !53
|
||||
// CHECK:STDOUT: store ptr poison, ptr %1, align 8, !dbg !53
|
||||
// CHECK:STDOUT: %2 = load ptr, ptr %1, align 8, !dbg !55
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.d088c7eb746488be:core.Destroy.Core"(ptr %1), !dbg !53
|
||||
// CHECK:STDOUT: ret ptr %2, !dbg !56
|
||||
// CHECK:STDOUT: define linkonce_odr ptr @_CGetC.C.Main.aac7339a58c49d52(ptr %self) #0 !dbg !44 {
|
||||
// CHECK:STDOUT: %1 = alloca ptr, align 8, !dbg !49
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %1), !dbg !49
|
||||
// CHECK:STDOUT: store ptr poison, ptr %1, align 8, !dbg !49
|
||||
// CHECK:STDOUT: %2 = load ptr, ptr %1, align 8, !dbg !51
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.d088c7eb746488be:core.Destroy.Core"(ptr %1), !dbg !49
|
||||
// CHECK:STDOUT: ret ptr %2, !dbg !52
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
|
||||
@@ -182,22 +175,18 @@ fn F(d: D(i32)) -> i32* {
|
||||
// CHECK:STDOUT: !30 = !DILocalVariable(arg: 1, scope: !29, type: !12)
|
||||
// CHECK:STDOUT: !31 = !DILocation(line: 5, column: 10, scope: !29)
|
||||
// CHECK:STDOUT: !32 = !{!30}
|
||||
// CHECK:STDOUT: !33 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.14de9dd8f7d35649:core.Destroy.Core", scope: null, file: !10, line: 5, type: !16, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !36)
|
||||
// CHECK:STDOUT: !33 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.14de9dd8f7d35649:core.Destroy.Core", scope: null, file: !10, line: 5, type: !16, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !36)
|
||||
// CHECK:STDOUT: !34 = !DILocalVariable(arg: 1, scope: !33, type: !12)
|
||||
// CHECK:STDOUT: !35 = !DILocation(line: 5, column: 10, scope: !33)
|
||||
// CHECK:STDOUT: !36 = !{!34}
|
||||
// CHECK:STDOUT: !37 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.14de9dd8f7d35649:core.Destroy.Core", scope: null, file: !10, line: 5, type: !16, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !40)
|
||||
// CHECK:STDOUT: !37 = distinct !DISubprogram(name: "GetI", linkageName: "_CGetI.D.eb057aa32837c84e.Main:I.Main.84588f41d61dafba", scope: null, file: !8, line: 6, type: !14, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !43)
|
||||
// CHECK:STDOUT: !38 = !DILocalVariable(arg: 1, scope: !37, type: !12)
|
||||
// CHECK:STDOUT: !39 = !DILocation(line: 5, column: 10, scope: !37)
|
||||
// CHECK:STDOUT: !40 = !{!38}
|
||||
// CHECK:STDOUT: !41 = distinct !DISubprogram(name: "GetI", linkageName: "_CGetI.D.eb057aa32837c84e.Main:I.Main.84588f41d61dafba", scope: null, file: !8, line: 6, type: !14, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !47)
|
||||
// CHECK:STDOUT: !42 = !DILocalVariable(arg: 1, scope: !41, type: !12)
|
||||
// CHECK:STDOUT: !46 = !DILocation(line: 7, column: 7, scope: !41)
|
||||
// CHECK:STDOUT: !47 = !{!42}
|
||||
// CHECK:STDOUT: !48 = distinct !DISubprogram(name: "GetC", linkageName: "_CGetC.C.Main.aac7339a58c49d52", scope: null, file: !4, line: 4, type: !14, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !57)
|
||||
// CHECK:STDOUT: !49 = !DILocalVariable(arg: 1, scope: !48, type: !12)
|
||||
// CHECK:STDOUT: !53 = !DILocation(line: 5, column: 5, scope: !48)
|
||||
// CHECK:STDOUT: !55 = !DILocation(line: 6, column: 12, scope: !48)
|
||||
// CHECK:STDOUT: !56 = !DILocation(line: 6, column: 5, scope: !48)
|
||||
// CHECK:STDOUT: !57 = !{!49}
|
||||
// CHECK:STDOUT: !42 = !DILocation(line: 7, column: 7, scope: !37)
|
||||
// CHECK:STDOUT: !43 = !{!38}
|
||||
// CHECK:STDOUT: !44 = distinct !DISubprogram(name: "GetC", linkageName: "_CGetC.C.Main.aac7339a58c49d52", scope: null, file: !4, line: 4, type: !14, spFlags: DISPFlagDefinition, unit: !11, retainedNodes: !53)
|
||||
// CHECK:STDOUT: !45 = !DILocalVariable(arg: 1, scope: !44, type: !12)
|
||||
// CHECK:STDOUT: !49 = !DILocation(line: 5, column: 5, scope: !44)
|
||||
// CHECK:STDOUT: !51 = !DILocation(line: 6, column: 12, scope: !44)
|
||||
// CHECK:STDOUT: !52 = !DILocation(line: 6, column: 5, scope: !44)
|
||||
// CHECK:STDOUT: !53 = !{!45}
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+186
-230
@@ -122,44 +122,37 @@ fn Test(a: A) -> C {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !64 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !64 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !66
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !68 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !68 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core"(ptr %self), !dbg !70
|
||||
// CHECK:STDOUT: ret void, !dbg !70
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !72 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !72 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self), !dbg !74
|
||||
// CHECK:STDOUT: ret void, !dbg !74
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !76 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !76 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self), !dbg !78
|
||||
// CHECK:STDOUT: ret void, !dbg !78
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !80 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !80 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !82
|
||||
// CHECK:STDOUT: ret void, !dbg !82
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !84 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !86
|
||||
// CHECK:STDOUT: ret void, !dbg !86
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
|
||||
// CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #2
|
||||
// CHECK:STDOUT:
|
||||
@@ -213,50 +206,46 @@ fn Test(a: A) -> C {
|
||||
// CHECK:STDOUT: !61 = !DILocalVariable(arg: 1, scope: !60, type: !20)
|
||||
// CHECK:STDOUT: !62 = !DILocation(line: 20, column: 3, scope: !60)
|
||||
// CHECK:STDOUT: !63 = !{!61}
|
||||
// CHECK:STDOUT: !64 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core", scope: null, file: !18, line: 20, type: !25, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !67)
|
||||
// CHECK:STDOUT: !64 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.f58524831c37807e:core.Destroy.Core", scope: null, file: !18, line: 20, type: !25, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !67)
|
||||
// CHECK:STDOUT: !65 = !DILocalVariable(arg: 1, scope: !64, type: !20)
|
||||
// CHECK:STDOUT: !66 = !DILocation(line: 20, column: 3, scope: !64)
|
||||
// CHECK:STDOUT: !67 = !{!65}
|
||||
// CHECK:STDOUT: !68 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.f58524831c37807e:core.Destroy.Core", scope: null, file: !18, line: 20, type: !25, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !71)
|
||||
// CHECK:STDOUT: !69 = !DILocalVariable(arg: 1, scope: !68, type: !20)
|
||||
// CHECK:STDOUT: !68 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !71)
|
||||
// CHECK:STDOUT: !69 = !DILocalVariable(arg: 1, scope: !68, type: !21)
|
||||
// CHECK:STDOUT: !70 = !DILocation(line: 20, column: 3, scope: !68)
|
||||
// CHECK:STDOUT: !71 = !{!69}
|
||||
// CHECK:STDOUT: !72 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !75)
|
||||
// CHECK:STDOUT: !72 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !75)
|
||||
// CHECK:STDOUT: !73 = !DILocalVariable(arg: 1, scope: !72, type: !21)
|
||||
// CHECK:STDOUT: !74 = !DILocation(line: 20, column: 3, scope: !72)
|
||||
// CHECK:STDOUT: !75 = !{!73}
|
||||
// CHECK:STDOUT: !76 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !79)
|
||||
// CHECK:STDOUT: !76 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !79)
|
||||
// CHECK:STDOUT: !77 = !DILocalVariable(arg: 1, scope: !76, type: !21)
|
||||
// CHECK:STDOUT: !78 = !DILocation(line: 20, column: 3, scope: !76)
|
||||
// CHECK:STDOUT: !79 = !{!77}
|
||||
// CHECK:STDOUT: !80 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !83)
|
||||
// CHECK:STDOUT: !80 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !83)
|
||||
// CHECK:STDOUT: !81 = !DILocalVariable(arg: 1, scope: !80, type: !21)
|
||||
// CHECK:STDOUT: !82 = !DILocation(line: 20, column: 3, scope: !80)
|
||||
// CHECK:STDOUT: !83 = !{!81}
|
||||
// CHECK:STDOUT: !84 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !87)
|
||||
// CHECK:STDOUT: !85 = !DILocalVariable(arg: 1, scope: !84, type: !21)
|
||||
// CHECK:STDOUT: !86 = !DILocation(line: 20, column: 3, scope: !84)
|
||||
// CHECK:STDOUT: !87 = !{!85}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; ---
|
||||
// CHECK:STDOUT: ; ModuleID = 'call_thunk.carbon'
|
||||
// CHECK:STDOUT: source_filename = "call_thunk.carbon"
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define void @_CTest.Main(ptr sret({ i32 }) %return, ptr %a) #0 !dbg !90 {
|
||||
// CHECK:STDOUT: define void @_CTest.Main(ptr sret({ i32 }) %return, ptr %a) #0 !dbg !86 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc7_20.1.temp = alloca { i32 }, align 4, !dbg !96
|
||||
// CHECK:STDOUT: %.loc7_20.2.temp = alloca { i32 }, align 4, !dbg !96
|
||||
// CHECK:STDOUT: %.loc7_19.1.temp = alloca { i32 }, align 4, !dbg !95
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc7_20.1.temp), !dbg !96
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc7_20.2.temp), !dbg !96
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc7_19.1.temp), !dbg !95
|
||||
// CHECK:STDOUT: call void @"_CConvert.A.Main:ImplicitAs.a6a60dfee2d7d273.Core"(ptr %.loc7_19.1.temp, ptr %a), !dbg !95
|
||||
// CHECK:STDOUT: call void @"_CF.61ea2aba74ab3bf1:I.Main"(ptr %.loc7_20.2.temp, ptr %.loc7_19.1.temp), !dbg !96
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.9522ff908e97e267.Core"(ptr %return, ptr %.loc7_20.2.temp), !dbg !97
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc7_20.2.temp), !dbg !96
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc7_19.1.temp), !dbg !95
|
||||
// CHECK:STDOUT: ret void, !dbg !97
|
||||
// CHECK:STDOUT: %.loc7_20.1.temp = alloca { i32 }, align 4, !dbg !92
|
||||
// CHECK:STDOUT: %.loc7_20.2.temp = alloca { i32 }, align 4, !dbg !92
|
||||
// CHECK:STDOUT: %.loc7_19.1.temp = alloca { i32 }, align 4, !dbg !91
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc7_20.1.temp), !dbg !92
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc7_20.2.temp), !dbg !92
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc7_19.1.temp), !dbg !91
|
||||
// CHECK:STDOUT: call void @"_CConvert.A.Main:ImplicitAs.a6a60dfee2d7d273.Core"(ptr %.loc7_19.1.temp, ptr %a), !dbg !91
|
||||
// CHECK:STDOUT: call void @"_CF.61ea2aba74ab3bf1:I.Main"(ptr %.loc7_20.2.temp, ptr %.loc7_19.1.temp), !dbg !92
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.9522ff908e97e267.Core"(ptr %return, ptr %.loc7_20.2.temp), !dbg !93
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc7_20.2.temp), !dbg !92
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc7_19.1.temp), !dbg !91
|
||||
// CHECK:STDOUT: ret void, !dbg !93
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: declare void @"_CF:thunk:I.f5faeaa774ca256e.Main:61ea2aba74ab3bf1:I.Main"(ptr sret({ i32 }), ptr)
|
||||
@@ -268,50 +257,43 @@ fn Test(a: A) -> C {
|
||||
// CHECK:STDOUT: declare void @"_CConvert.B.Main:ImplicitAs.9522ff908e97e267.Core"(ptr sret({ i32 }), ptr)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core"(ptr %self) #0 !dbg !99 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core"(ptr %self) #0 !dbg !95 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !97
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !99 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !101
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !103 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !103 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !105
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !107 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !107 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core"(ptr %self), !dbg !109
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self), !dbg !109
|
||||
// CHECK:STDOUT: ret void, !dbg !109
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !111 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !111 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !113
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !115 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !115 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self), !dbg !117
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !117
|
||||
// CHECK:STDOUT: ret void, !dbg !117
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !119 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !121
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !123 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !125
|
||||
// CHECK:STDOUT: ret void, !dbg !125
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
|
||||
// CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #1
|
||||
// CHECK:STDOUT:
|
||||
@@ -322,7 +304,7 @@ fn Test(a: A) -> C {
|
||||
// CHECK:STDOUT: attributes #0 = { nounwind }
|
||||
// CHECK:STDOUT: attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !llvm.dbg.cu = !{!89}
|
||||
// CHECK:STDOUT: !llvm.dbg.cu = !{!85}
|
||||
// CHECK:STDOUT: !llvm.module.flags = !{!2, !3}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !2 = !{i32 7, !"Dwarf Version", i32 5}
|
||||
@@ -335,70 +317,66 @@ fn Test(a: A) -> C {
|
||||
// CHECK:STDOUT: !25 = !DISubroutineType(types: !24)
|
||||
// CHECK:STDOUT: !26 = !{null, !21}
|
||||
// CHECK:STDOUT: !27 = !DISubroutineType(types: !26)
|
||||
// CHECK:STDOUT: !88 = !DIFile(filename: "call_thunk.carbon", directory: "")
|
||||
// CHECK:STDOUT: !89 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !88, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !90 = distinct !DISubprogram(name: "Test", linkageName: "_CTest.Main", scope: null, file: !88, line: 6, type: !23, spFlags: DISPFlagDefinition, unit: !89, retainedNodes: !98)
|
||||
// CHECK:STDOUT: !91 = !DILocalVariable(arg: 1, scope: !90, type: !21)
|
||||
// CHECK:STDOUT: !95 = !DILocation(line: 7, column: 19, scope: !90)
|
||||
// CHECK:STDOUT: !96 = !DILocation(line: 7, column: 10, scope: !90)
|
||||
// CHECK:STDOUT: !97 = !DILocation(line: 7, column: 3, scope: !90)
|
||||
// CHECK:STDOUT: !98 = !{!91}
|
||||
// CHECK:STDOUT: !99 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core", scope: null, file: !88, line: 7, type: !25, spFlags: DISPFlagDefinition, unit: !89, retainedNodes: !102)
|
||||
// CHECK:STDOUT: !84 = !DIFile(filename: "call_thunk.carbon", directory: "")
|
||||
// CHECK:STDOUT: !85 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !84, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !86 = distinct !DISubprogram(name: "Test", linkageName: "_CTest.Main", scope: null, file: !84, line: 6, type: !23, spFlags: DISPFlagDefinition, unit: !85, retainedNodes: !94)
|
||||
// CHECK:STDOUT: !87 = !DILocalVariable(arg: 1, scope: !86, type: !21)
|
||||
// CHECK:STDOUT: !91 = !DILocation(line: 7, column: 19, scope: !86)
|
||||
// CHECK:STDOUT: !92 = !DILocation(line: 7, column: 10, scope: !86)
|
||||
// CHECK:STDOUT: !93 = !DILocation(line: 7, column: 3, scope: !86)
|
||||
// CHECK:STDOUT: !94 = !{!87}
|
||||
// CHECK:STDOUT: !95 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core", scope: null, file: !84, line: 7, type: !25, spFlags: DISPFlagDefinition, unit: !85, retainedNodes: !98)
|
||||
// CHECK:STDOUT: !96 = !DILocalVariable(arg: 1, scope: !95, type: !20)
|
||||
// CHECK:STDOUT: !97 = !DILocation(line: 7, column: 10, scope: !95)
|
||||
// CHECK:STDOUT: !98 = !{!96}
|
||||
// CHECK:STDOUT: !99 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.f58524831c37807e:core.Destroy.Core", scope: null, file: !84, line: 7, type: !25, spFlags: DISPFlagDefinition, unit: !85, retainedNodes: !102)
|
||||
// CHECK:STDOUT: !100 = !DILocalVariable(arg: 1, scope: !99, type: !20)
|
||||
// CHECK:STDOUT: !101 = !DILocation(line: 7, column: 10, scope: !99)
|
||||
// CHECK:STDOUT: !102 = !{!100}
|
||||
// CHECK:STDOUT: !103 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core", scope: null, file: !88, line: 7, type: !25, spFlags: DISPFlagDefinition, unit: !89, retainedNodes: !106)
|
||||
// CHECK:STDOUT: !104 = !DILocalVariable(arg: 1, scope: !103, type: !20)
|
||||
// CHECK:STDOUT: !103 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !84, line: 7, type: !27, spFlags: DISPFlagDefinition, unit: !85, retainedNodes: !106)
|
||||
// CHECK:STDOUT: !104 = !DILocalVariable(arg: 1, scope: !103, type: !21)
|
||||
// CHECK:STDOUT: !105 = !DILocation(line: 7, column: 10, scope: !103)
|
||||
// CHECK:STDOUT: !106 = !{!104}
|
||||
// CHECK:STDOUT: !107 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.f58524831c37807e:core.Destroy.Core", scope: null, file: !88, line: 7, type: !25, spFlags: DISPFlagDefinition, unit: !89, retainedNodes: !110)
|
||||
// CHECK:STDOUT: !108 = !DILocalVariable(arg: 1, scope: !107, type: !20)
|
||||
// CHECK:STDOUT: !107 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !84, line: 7, type: !27, spFlags: DISPFlagDefinition, unit: !85, retainedNodes: !110)
|
||||
// CHECK:STDOUT: !108 = !DILocalVariable(arg: 1, scope: !107, type: !21)
|
||||
// CHECK:STDOUT: !109 = !DILocation(line: 7, column: 10, scope: !107)
|
||||
// CHECK:STDOUT: !110 = !{!108}
|
||||
// CHECK:STDOUT: !111 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !88, line: 7, type: !27, spFlags: DISPFlagDefinition, unit: !89, retainedNodes: !114)
|
||||
// CHECK:STDOUT: !111 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !84, line: 7, type: !27, spFlags: DISPFlagDefinition, unit: !85, retainedNodes: !114)
|
||||
// CHECK:STDOUT: !112 = !DILocalVariable(arg: 1, scope: !111, type: !21)
|
||||
// CHECK:STDOUT: !113 = !DILocation(line: 7, column: 10, scope: !111)
|
||||
// CHECK:STDOUT: !114 = !{!112}
|
||||
// CHECK:STDOUT: !115 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !88, line: 7, type: !27, spFlags: DISPFlagDefinition, unit: !89, retainedNodes: !118)
|
||||
// CHECK:STDOUT: !115 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !84, line: 7, type: !27, spFlags: DISPFlagDefinition, unit: !85, retainedNodes: !118)
|
||||
// CHECK:STDOUT: !116 = !DILocalVariable(arg: 1, scope: !115, type: !21)
|
||||
// CHECK:STDOUT: !117 = !DILocation(line: 7, column: 10, scope: !115)
|
||||
// CHECK:STDOUT: !118 = !{!116}
|
||||
// CHECK:STDOUT: !119 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !88, line: 7, type: !27, spFlags: DISPFlagDefinition, unit: !89, retainedNodes: !122)
|
||||
// CHECK:STDOUT: !120 = !DILocalVariable(arg: 1, scope: !119, type: !21)
|
||||
// CHECK:STDOUT: !121 = !DILocation(line: 7, column: 10, scope: !119)
|
||||
// CHECK:STDOUT: !122 = !{!120}
|
||||
// CHECK:STDOUT: !123 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !88, line: 7, type: !27, spFlags: DISPFlagDefinition, unit: !89, retainedNodes: !126)
|
||||
// CHECK:STDOUT: !124 = !DILocalVariable(arg: 1, scope: !123, type: !21)
|
||||
// CHECK:STDOUT: !125 = !DILocation(line: 7, column: 10, scope: !123)
|
||||
// CHECK:STDOUT: !126 = !{!124}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; ---
|
||||
// CHECK:STDOUT: ; ModuleID = 'thunk_for_imported_interface.carbon'
|
||||
// CHECK:STDOUT: source_filename = "thunk_for_imported_interface.carbon"
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define void @"_CF.X.Main:I.Main"(ptr sret({ i32 }) %return, ptr %b) #0 !dbg !129 {
|
||||
// CHECK:STDOUT: define void @"_CF.X.Main:I.Main"(ptr sret({ i32 }) %return, ptr %b) #0 !dbg !121 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc9_35.1.b = getelementptr inbounds nuw { i32 }, ptr %b, i32 0, i32 0, !dbg !134
|
||||
// CHECK:STDOUT: %.loc9_35.2 = load i32, ptr %.loc9_35.1.b, align 4, !dbg !134
|
||||
// CHECK:STDOUT: %.loc9_37.2.b = getelementptr inbounds nuw { i32 }, ptr %return, i32 0, i32 0, !dbg !135
|
||||
// CHECK:STDOUT: store i32 %.loc9_35.2, ptr %.loc9_37.2.b, align 4, !dbg !135
|
||||
// CHECK:STDOUT: ret void, !dbg !136
|
||||
// CHECK:STDOUT: %.loc9_35.1.b = getelementptr inbounds nuw { i32 }, ptr %b, i32 0, i32 0, !dbg !126
|
||||
// CHECK:STDOUT: %.loc9_35.2 = load i32, ptr %.loc9_35.1.b, align 4, !dbg !126
|
||||
// CHECK:STDOUT: %.loc9_37.2.b = getelementptr inbounds nuw { i32 }, ptr %return, i32 0, i32 0, !dbg !127
|
||||
// CHECK:STDOUT: store i32 %.loc9_35.2, ptr %.loc9_37.2.b, align 4, !dbg !127
|
||||
// CHECK:STDOUT: ret void, !dbg !128
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: alwaysinline nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CF:thunk:I.d0cc85b6c89517e3.Main:X.Main:I.Main"(ptr sret({ i32 }) %return, ptr %a) #1 !dbg !138 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CF:thunk:I.d0cc85b6c89517e3.Main:X.Main:I.Main"(ptr sret({ i32 }) %return, ptr %a) #1 !dbg !130 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc9_19.1.temp = alloca { i32 }, align 4, !dbg !141
|
||||
// CHECK:STDOUT: %.4.temp = alloca { i32 }, align 4, !dbg !140
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc9_19.1.temp), !dbg !141
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.4.temp), !dbg !140
|
||||
// CHECK:STDOUT: call void @"_CConvert.A.Main:ImplicitAs.a6a60dfee2d7d273.Core"(ptr %.4.temp, ptr %a), !dbg !140
|
||||
// CHECK:STDOUT: call void @"_CF.X.Main:I.Main"(ptr %.loc9_19.1.temp, ptr %.4.temp), !dbg !141
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.9522ff908e97e267.Core"(ptr %return, ptr %.loc9_19.1.temp), !dbg !141
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc9_19.1.temp), !dbg !141
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.4.temp), !dbg !140
|
||||
// CHECK:STDOUT: ret void, !dbg !141
|
||||
// CHECK:STDOUT: %.loc9_19.1.temp = alloca { i32 }, align 4, !dbg !133
|
||||
// CHECK:STDOUT: %.4.temp = alloca { i32 }, align 4, !dbg !132
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc9_19.1.temp), !dbg !133
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.4.temp), !dbg !132
|
||||
// CHECK:STDOUT: call void @"_CConvert.A.Main:ImplicitAs.a6a60dfee2d7d273.Core"(ptr %.4.temp, ptr %a), !dbg !132
|
||||
// CHECK:STDOUT: call void @"_CF.X.Main:I.Main"(ptr %.loc9_19.1.temp, ptr %.4.temp), !dbg !133
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.9522ff908e97e267.Core"(ptr %return, ptr %.loc9_19.1.temp), !dbg !133
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc9_19.1.temp), !dbg !133
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.4.temp), !dbg !132
|
||||
// CHECK:STDOUT: ret void, !dbg !133
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: declare void @"_CConvert.A.Main:ImplicitAs.a6a60dfee2d7d273.Core"(ptr sret({ i32 }), ptr)
|
||||
@@ -406,50 +384,43 @@ fn Test(a: A) -> C {
|
||||
// CHECK:STDOUT: declare void @"_CConvert.B.Main:ImplicitAs.9522ff908e97e267.Core"(ptr sret({ i32 }), ptr)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core"(ptr %self) #0 !dbg !143 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core"(ptr %self) #0 !dbg !135 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !137
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !139 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !141
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !143 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !145
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !147 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !147 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self), !dbg !149
|
||||
// CHECK:STDOUT: ret void, !dbg !149
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !151 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !151 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core"(ptr %self), !dbg !153
|
||||
// CHECK:STDOUT: ret void, !dbg !153
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !155 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !155 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !157
|
||||
// CHECK:STDOUT: ret void, !dbg !157
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !159 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self), !dbg !161
|
||||
// CHECK:STDOUT: ret void, !dbg !161
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !163 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !165
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !167 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !169
|
||||
// CHECK:STDOUT: ret void, !dbg !169
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
|
||||
// CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #2
|
||||
// CHECK:STDOUT:
|
||||
@@ -461,7 +432,7 @@ fn Test(a: A) -> C {
|
||||
// CHECK:STDOUT: attributes #1 = { alwaysinline nounwind }
|
||||
// CHECK:STDOUT: attributes #2 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !llvm.dbg.cu = !{!128}
|
||||
// CHECK:STDOUT: !llvm.dbg.cu = !{!120}
|
||||
// CHECK:STDOUT: !llvm.module.flags = !{!2, !3}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !2 = !{i32 7, !"Dwarf Version", i32 5}
|
||||
@@ -474,67 +445,63 @@ fn Test(a: A) -> C {
|
||||
// CHECK:STDOUT: !25 = !DISubroutineType(types: !24)
|
||||
// CHECK:STDOUT: !26 = !{null, !21}
|
||||
// CHECK:STDOUT: !27 = !DISubroutineType(types: !26)
|
||||
// CHECK:STDOUT: !127 = !DIFile(filename: "thunk_for_imported_interface.carbon", directory: "")
|
||||
// CHECK:STDOUT: !128 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !127, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !129 = distinct !DISubprogram(name: "F", linkageName: "_CF.X.Main:I.Main", scope: null, file: !127, line: 9, type: !23, spFlags: DISPFlagDefinition, unit: !128, retainedNodes: !137)
|
||||
// CHECK:STDOUT: !130 = !DILocalVariable(arg: 1, scope: !129, type: !21)
|
||||
// CHECK:STDOUT: !134 = !DILocation(line: 9, column: 34, scope: !129)
|
||||
// CHECK:STDOUT: !135 = !DILocation(line: 9, column: 28, scope: !129)
|
||||
// CHECK:STDOUT: !136 = !DILocation(line: 9, column: 21, scope: !129)
|
||||
// CHECK:STDOUT: !137 = !{!130}
|
||||
// CHECK:STDOUT: !138 = distinct !DISubprogram(name: "F", linkageName: "_CF:thunk:I.d0cc85b6c89517e3.Main:X.Main:I.Main", scope: null, file: !127, line: 9, type: !23, spFlags: DISPFlagDefinition, unit: !128, retainedNodes: !142)
|
||||
// CHECK:STDOUT: !139 = !DILocalVariable(arg: 1, scope: !138, type: !21)
|
||||
// CHECK:STDOUT: !140 = !DILocation(line: 0, scope: !138)
|
||||
// CHECK:STDOUT: !141 = !DILocation(line: 9, column: 3, scope: !138)
|
||||
// CHECK:STDOUT: !142 = !{!139}
|
||||
// CHECK:STDOUT: !143 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core", scope: null, file: !127, line: 9, type: !25, spFlags: DISPFlagDefinition, unit: !128, retainedNodes: !146)
|
||||
// CHECK:STDOUT: !144 = !DILocalVariable(arg: 1, scope: !143, type: !20)
|
||||
// CHECK:STDOUT: !119 = !DIFile(filename: "thunk_for_imported_interface.carbon", directory: "")
|
||||
// CHECK:STDOUT: !120 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !119, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !121 = distinct !DISubprogram(name: "F", linkageName: "_CF.X.Main:I.Main", scope: null, file: !119, line: 9, type: !23, spFlags: DISPFlagDefinition, unit: !120, retainedNodes: !129)
|
||||
// CHECK:STDOUT: !122 = !DILocalVariable(arg: 1, scope: !121, type: !21)
|
||||
// CHECK:STDOUT: !126 = !DILocation(line: 9, column: 34, scope: !121)
|
||||
// CHECK:STDOUT: !127 = !DILocation(line: 9, column: 28, scope: !121)
|
||||
// CHECK:STDOUT: !128 = !DILocation(line: 9, column: 21, scope: !121)
|
||||
// CHECK:STDOUT: !129 = !{!122}
|
||||
// CHECK:STDOUT: !130 = distinct !DISubprogram(name: "F", linkageName: "_CF:thunk:I.d0cc85b6c89517e3.Main:X.Main:I.Main", scope: null, file: !119, line: 9, type: !23, spFlags: DISPFlagDefinition, unit: !120, retainedNodes: !134)
|
||||
// CHECK:STDOUT: !131 = !DILocalVariable(arg: 1, scope: !130, type: !21)
|
||||
// CHECK:STDOUT: !132 = !DILocation(line: 0, scope: !130)
|
||||
// CHECK:STDOUT: !133 = !DILocation(line: 9, column: 3, scope: !130)
|
||||
// CHECK:STDOUT: !134 = !{!131}
|
||||
// CHECK:STDOUT: !135 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core", scope: null, file: !119, line: 9, type: !25, spFlags: DISPFlagDefinition, unit: !120, retainedNodes: !138)
|
||||
// CHECK:STDOUT: !136 = !DILocalVariable(arg: 1, scope: !135, type: !20)
|
||||
// CHECK:STDOUT: !137 = !DILocation(line: 9, column: 3, scope: !135)
|
||||
// CHECK:STDOUT: !138 = !{!136}
|
||||
// CHECK:STDOUT: !139 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.f58524831c37807e:core.Destroy.Core", scope: null, file: !119, line: 9, type: !25, spFlags: DISPFlagDefinition, unit: !120, retainedNodes: !142)
|
||||
// CHECK:STDOUT: !140 = !DILocalVariable(arg: 1, scope: !139, type: !20)
|
||||
// CHECK:STDOUT: !141 = !DILocation(line: 9, column: 3, scope: !139)
|
||||
// CHECK:STDOUT: !142 = !{!140}
|
||||
// CHECK:STDOUT: !143 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !119, line: 9, type: !27, spFlags: DISPFlagDefinition, unit: !120, retainedNodes: !146)
|
||||
// CHECK:STDOUT: !144 = !DILocalVariable(arg: 1, scope: !143, type: !21)
|
||||
// CHECK:STDOUT: !145 = !DILocation(line: 9, column: 3, scope: !143)
|
||||
// CHECK:STDOUT: !146 = !{!144}
|
||||
// CHECK:STDOUT: !147 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core", scope: null, file: !127, line: 9, type: !25, spFlags: DISPFlagDefinition, unit: !128, retainedNodes: !150)
|
||||
// CHECK:STDOUT: !148 = !DILocalVariable(arg: 1, scope: !147, type: !20)
|
||||
// CHECK:STDOUT: !147 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !119, line: 9, type: !27, spFlags: DISPFlagDefinition, unit: !120, retainedNodes: !150)
|
||||
// CHECK:STDOUT: !148 = !DILocalVariable(arg: 1, scope: !147, type: !21)
|
||||
// CHECK:STDOUT: !149 = !DILocation(line: 9, column: 3, scope: !147)
|
||||
// CHECK:STDOUT: !150 = !{!148}
|
||||
// CHECK:STDOUT: !151 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.f58524831c37807e:core.Destroy.Core", scope: null, file: !127, line: 9, type: !25, spFlags: DISPFlagDefinition, unit: !128, retainedNodes: !154)
|
||||
// CHECK:STDOUT: !152 = !DILocalVariable(arg: 1, scope: !151, type: !20)
|
||||
// CHECK:STDOUT: !151 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !119, line: 9, type: !27, spFlags: DISPFlagDefinition, unit: !120, retainedNodes: !154)
|
||||
// CHECK:STDOUT: !152 = !DILocalVariable(arg: 1, scope: !151, type: !21)
|
||||
// CHECK:STDOUT: !153 = !DILocation(line: 9, column: 3, scope: !151)
|
||||
// CHECK:STDOUT: !154 = !{!152}
|
||||
// CHECK:STDOUT: !155 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !127, line: 9, type: !27, spFlags: DISPFlagDefinition, unit: !128, retainedNodes: !158)
|
||||
// CHECK:STDOUT: !155 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !119, line: 9, type: !27, spFlags: DISPFlagDefinition, unit: !120, retainedNodes: !158)
|
||||
// CHECK:STDOUT: !156 = !DILocalVariable(arg: 1, scope: !155, type: !21)
|
||||
// CHECK:STDOUT: !157 = !DILocation(line: 9, column: 3, scope: !155)
|
||||
// CHECK:STDOUT: !158 = !{!156}
|
||||
// CHECK:STDOUT: !159 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !127, line: 9, type: !27, spFlags: DISPFlagDefinition, unit: !128, retainedNodes: !162)
|
||||
// CHECK:STDOUT: !160 = !DILocalVariable(arg: 1, scope: !159, type: !21)
|
||||
// CHECK:STDOUT: !161 = !DILocation(line: 9, column: 3, scope: !159)
|
||||
// CHECK:STDOUT: !162 = !{!160}
|
||||
// CHECK:STDOUT: !163 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !127, line: 9, type: !27, spFlags: DISPFlagDefinition, unit: !128, retainedNodes: !166)
|
||||
// CHECK:STDOUT: !164 = !DILocalVariable(arg: 1, scope: !163, type: !21)
|
||||
// CHECK:STDOUT: !165 = !DILocation(line: 9, column: 3, scope: !163)
|
||||
// CHECK:STDOUT: !166 = !{!164}
|
||||
// CHECK:STDOUT: !167 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !127, line: 9, type: !27, spFlags: DISPFlagDefinition, unit: !128, retainedNodes: !170)
|
||||
// CHECK:STDOUT: !168 = !DILocalVariable(arg: 1, scope: !167, type: !21)
|
||||
// CHECK:STDOUT: !169 = !DILocation(line: 9, column: 3, scope: !167)
|
||||
// CHECK:STDOUT: !170 = !{!168}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; ---
|
||||
// CHECK:STDOUT: ; ModuleID = 'call_thunk_for_imported_interface.carbon'
|
||||
// CHECK:STDOUT: source_filename = "call_thunk_for_imported_interface.carbon"
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define void @_CTest.Main(ptr sret({ i32 }) %return, ptr %a) #0 !dbg !173 {
|
||||
// CHECK:STDOUT: define void @_CTest.Main(ptr sret({ i32 }) %return, ptr %a) #0 !dbg !161 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc8_19.1.temp = alloca { i32 }, align 4, !dbg !179
|
||||
// CHECK:STDOUT: %.loc8_19.2.temp = alloca { i32 }, align 4, !dbg !179
|
||||
// CHECK:STDOUT: %.loc8_18.1.temp = alloca { i32 }, align 4, !dbg !178
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc8_19.1.temp), !dbg !179
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc8_19.2.temp), !dbg !179
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc8_18.1.temp), !dbg !178
|
||||
// CHECK:STDOUT: call void @"_CConvert.A.Main:ImplicitAs.a6a60dfee2d7d273.Core"(ptr %.loc8_18.1.temp, ptr %a), !dbg !178
|
||||
// CHECK:STDOUT: call void @"_CF.X.Main:I.Main"(ptr %.loc8_19.2.temp, ptr %.loc8_18.1.temp), !dbg !179
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.9522ff908e97e267.Core"(ptr %return, ptr %.loc8_19.2.temp), !dbg !180
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc8_19.2.temp), !dbg !179
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc8_18.1.temp), !dbg !178
|
||||
// CHECK:STDOUT: ret void, !dbg !180
|
||||
// CHECK:STDOUT: %.loc8_19.1.temp = alloca { i32 }, align 4, !dbg !167
|
||||
// CHECK:STDOUT: %.loc8_19.2.temp = alloca { i32 }, align 4, !dbg !167
|
||||
// CHECK:STDOUT: %.loc8_18.1.temp = alloca { i32 }, align 4, !dbg !166
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc8_19.1.temp), !dbg !167
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc8_19.2.temp), !dbg !167
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc8_18.1.temp), !dbg !166
|
||||
// CHECK:STDOUT: call void @"_CConvert.A.Main:ImplicitAs.a6a60dfee2d7d273.Core"(ptr %.loc8_18.1.temp, ptr %a), !dbg !166
|
||||
// CHECK:STDOUT: call void @"_CF.X.Main:I.Main"(ptr %.loc8_19.2.temp, ptr %.loc8_18.1.temp), !dbg !167
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.9522ff908e97e267.Core"(ptr %return, ptr %.loc8_19.2.temp), !dbg !168
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc8_19.2.temp), !dbg !167
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc8_18.1.temp), !dbg !166
|
||||
// CHECK:STDOUT: ret void, !dbg !168
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: declare void @"_CF:thunk:I.4980a17f6b368c72.Main:X.Main:I.Main"(ptr sret({ i32 }), ptr)
|
||||
@@ -546,50 +513,43 @@ fn Test(a: A) -> C {
|
||||
// CHECK:STDOUT: declare void @"_CConvert.B.Main:ImplicitAs.9522ff908e97e267.Core"(ptr sret({ i32 }), ptr)
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core"(ptr %self) #0 !dbg !182 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core"(ptr %self) #0 !dbg !170 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !172
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !174 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !176
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !178 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !180
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !182 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self), !dbg !184
|
||||
// CHECK:STDOUT: ret void, !dbg !184
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !186 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !186 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !188
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !190 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !190 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core"(ptr %self), !dbg !192
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !192
|
||||
// CHECK:STDOUT: ret void, !dbg !192
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !194 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !196
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !198 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self), !dbg !200
|
||||
// CHECK:STDOUT: ret void, !dbg !200
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !202 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !204
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !206 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !208
|
||||
// CHECK:STDOUT: ret void, !dbg !208
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
|
||||
// CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #1
|
||||
// CHECK:STDOUT:
|
||||
@@ -600,7 +560,7 @@ fn Test(a: A) -> C {
|
||||
// CHECK:STDOUT: attributes #0 = { nounwind }
|
||||
// CHECK:STDOUT: attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !llvm.dbg.cu = !{!172}
|
||||
// CHECK:STDOUT: !llvm.dbg.cu = !{!160}
|
||||
// CHECK:STDOUT: !llvm.module.flags = !{!2, !3}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !2 = !{i32 7, !"Dwarf Version", i32 5}
|
||||
@@ -613,40 +573,36 @@ fn Test(a: A) -> C {
|
||||
// CHECK:STDOUT: !25 = !DISubroutineType(types: !24)
|
||||
// CHECK:STDOUT: !26 = !{null, !21}
|
||||
// CHECK:STDOUT: !27 = !DISubroutineType(types: !26)
|
||||
// CHECK:STDOUT: !171 = !DIFile(filename: "call_thunk_for_imported_interface.carbon", directory: "")
|
||||
// CHECK:STDOUT: !172 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !171, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !173 = distinct !DISubprogram(name: "Test", linkageName: "_CTest.Main", scope: null, file: !171, line: 7, type: !23, spFlags: DISPFlagDefinition, unit: !172, retainedNodes: !181)
|
||||
// CHECK:STDOUT: !174 = !DILocalVariable(arg: 1, scope: !173, type: !21)
|
||||
// CHECK:STDOUT: !178 = !DILocation(line: 8, column: 18, scope: !173)
|
||||
// CHECK:STDOUT: !179 = !DILocation(line: 8, column: 10, scope: !173)
|
||||
// CHECK:STDOUT: !180 = !DILocation(line: 8, column: 3, scope: !173)
|
||||
// CHECK:STDOUT: !181 = !{!174}
|
||||
// CHECK:STDOUT: !182 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core", scope: null, file: !171, line: 8, type: !25, spFlags: DISPFlagDefinition, unit: !172, retainedNodes: !185)
|
||||
// CHECK:STDOUT: !183 = !DILocalVariable(arg: 1, scope: !182, type: !20)
|
||||
// CHECK:STDOUT: !159 = !DIFile(filename: "call_thunk_for_imported_interface.carbon", directory: "")
|
||||
// CHECK:STDOUT: !160 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !159, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !161 = distinct !DISubprogram(name: "Test", linkageName: "_CTest.Main", scope: null, file: !159, line: 7, type: !23, spFlags: DISPFlagDefinition, unit: !160, retainedNodes: !169)
|
||||
// CHECK:STDOUT: !162 = !DILocalVariable(arg: 1, scope: !161, type: !21)
|
||||
// CHECK:STDOUT: !166 = !DILocation(line: 8, column: 18, scope: !161)
|
||||
// CHECK:STDOUT: !167 = !DILocation(line: 8, column: 10, scope: !161)
|
||||
// CHECK:STDOUT: !168 = !DILocation(line: 8, column: 3, scope: !161)
|
||||
// CHECK:STDOUT: !169 = !{!162}
|
||||
// CHECK:STDOUT: !170 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.6dae29ece9a708c4:core.Destroy.Core", scope: null, file: !159, line: 8, type: !25, spFlags: DISPFlagDefinition, unit: !160, retainedNodes: !173)
|
||||
// CHECK:STDOUT: !171 = !DILocalVariable(arg: 1, scope: !170, type: !20)
|
||||
// CHECK:STDOUT: !172 = !DILocation(line: 8, column: 10, scope: !170)
|
||||
// CHECK:STDOUT: !173 = !{!171}
|
||||
// CHECK:STDOUT: !174 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.f58524831c37807e:core.Destroy.Core", scope: null, file: !159, line: 8, type: !25, spFlags: DISPFlagDefinition, unit: !160, retainedNodes: !177)
|
||||
// CHECK:STDOUT: !175 = !DILocalVariable(arg: 1, scope: !174, type: !20)
|
||||
// CHECK:STDOUT: !176 = !DILocation(line: 8, column: 10, scope: !174)
|
||||
// CHECK:STDOUT: !177 = !{!175}
|
||||
// CHECK:STDOUT: !178 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !159, line: 8, type: !27, spFlags: DISPFlagDefinition, unit: !160, retainedNodes: !181)
|
||||
// CHECK:STDOUT: !179 = !DILocalVariable(arg: 1, scope: !178, type: !21)
|
||||
// CHECK:STDOUT: !180 = !DILocation(line: 8, column: 10, scope: !178)
|
||||
// CHECK:STDOUT: !181 = !{!179}
|
||||
// CHECK:STDOUT: !182 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !159, line: 8, type: !27, spFlags: DISPFlagDefinition, unit: !160, retainedNodes: !185)
|
||||
// CHECK:STDOUT: !183 = !DILocalVariable(arg: 1, scope: !182, type: !21)
|
||||
// CHECK:STDOUT: !184 = !DILocation(line: 8, column: 10, scope: !182)
|
||||
// CHECK:STDOUT: !185 = !{!183}
|
||||
// CHECK:STDOUT: !186 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core", scope: null, file: !171, line: 8, type: !25, spFlags: DISPFlagDefinition, unit: !172, retainedNodes: !189)
|
||||
// CHECK:STDOUT: !187 = !DILocalVariable(arg: 1, scope: !186, type: !20)
|
||||
// CHECK:STDOUT: !186 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !159, line: 8, type: !27, spFlags: DISPFlagDefinition, unit: !160, retainedNodes: !189)
|
||||
// CHECK:STDOUT: !187 = !DILocalVariable(arg: 1, scope: !186, type: !21)
|
||||
// CHECK:STDOUT: !188 = !DILocation(line: 8, column: 10, scope: !186)
|
||||
// CHECK:STDOUT: !189 = !{!187}
|
||||
// CHECK:STDOUT: !190 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.f58524831c37807e:core.Destroy.Core", scope: null, file: !171, line: 8, type: !25, spFlags: DISPFlagDefinition, unit: !172, retainedNodes: !193)
|
||||
// CHECK:STDOUT: !191 = !DILocalVariable(arg: 1, scope: !190, type: !20)
|
||||
// CHECK:STDOUT: !190 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !159, line: 8, type: !27, spFlags: DISPFlagDefinition, unit: !160, retainedNodes: !193)
|
||||
// CHECK:STDOUT: !191 = !DILocalVariable(arg: 1, scope: !190, type: !21)
|
||||
// CHECK:STDOUT: !192 = !DILocation(line: 8, column: 10, scope: !190)
|
||||
// CHECK:STDOUT: !193 = !{!191}
|
||||
// CHECK:STDOUT: !194 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !171, line: 8, type: !27, spFlags: DISPFlagDefinition, unit: !172, retainedNodes: !197)
|
||||
// CHECK:STDOUT: !195 = !DILocalVariable(arg: 1, scope: !194, type: !21)
|
||||
// CHECK:STDOUT: !196 = !DILocation(line: 8, column: 10, scope: !194)
|
||||
// CHECK:STDOUT: !197 = !{!195}
|
||||
// CHECK:STDOUT: !198 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !171, line: 8, type: !27, spFlags: DISPFlagDefinition, unit: !172, retainedNodes: !201)
|
||||
// CHECK:STDOUT: !199 = !DILocalVariable(arg: 1, scope: !198, type: !21)
|
||||
// CHECK:STDOUT: !200 = !DILocation(line: 8, column: 10, scope: !198)
|
||||
// CHECK:STDOUT: !201 = !{!199}
|
||||
// CHECK:STDOUT: !202 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !171, line: 8, type: !27, spFlags: DISPFlagDefinition, unit: !172, retainedNodes: !205)
|
||||
// CHECK:STDOUT: !203 = !DILocalVariable(arg: 1, scope: !202, type: !21)
|
||||
// CHECK:STDOUT: !204 = !DILocation(line: 8, column: 10, scope: !202)
|
||||
// CHECK:STDOUT: !205 = !{!203}
|
||||
// CHECK:STDOUT: !206 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !171, line: 8, type: !27, spFlags: DISPFlagDefinition, unit: !172, retainedNodes: !209)
|
||||
// CHECK:STDOUT: !207 = !DILocalVariable(arg: 1, scope: !206, type: !21)
|
||||
// CHECK:STDOUT: !208 = !DILocation(line: 8, column: 10, scope: !206)
|
||||
// CHECK:STDOUT: !209 = !{!207}
|
||||
// CHECK:STDOUT:
|
||||
|
||||
+116
-149
@@ -126,59 +126,52 @@ fn CallCallGeneric(c: C(()), b: B) -> A {
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !64 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !64 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !66
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.f58524831c37807e:core.Destroy.Core"(ptr %self) #0 !dbg !68 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !68 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core"(ptr %self), !dbg !70
|
||||
// CHECK:STDOUT: ret void, !dbg !70
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !72 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !72 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self), !dbg !74
|
||||
// CHECK:STDOUT: ret void, !dbg !74
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self) #0 !dbg !76 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !76 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core"(ptr %self), !dbg !78
|
||||
// CHECK:STDOUT: ret void, !dbg !78
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !80 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !80 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !82
|
||||
// CHECK:STDOUT: ret void, !dbg !82
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !84 {
|
||||
// CHECK:STDOUT: define void @_CTest.Main(ptr sret({ i32 }) %return, ptr %a) #0 !dbg !84 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !86
|
||||
// CHECK:STDOUT: ret void, !dbg !86
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define void @_CTest.Main(ptr sret({ i32 }) %return, ptr %a) #0 !dbg !88 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc24_20.1.temp = alloca { i32 }, align 4, !dbg !94
|
||||
// CHECK:STDOUT: %.loc24_20.2.temp = alloca { i32 }, align 4, !dbg !94
|
||||
// CHECK:STDOUT: %.loc24_19.1.temp = alloca { i32 }, align 4, !dbg !93
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc24_20.1.temp), !dbg !94
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc24_20.2.temp), !dbg !94
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc24_19.1.temp), !dbg !93
|
||||
// CHECK:STDOUT: call void @"_CConvert.A.Main:ImplicitAs.a6a60dfee2d7d273.Core"(ptr %.loc24_19.1.temp, ptr %a), !dbg !93
|
||||
// CHECK:STDOUT: call void @"_CF.61ea2aba74ab3bf1:I.Main"(ptr %.loc24_20.2.temp, ptr %.loc24_19.1.temp), !dbg !94
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.9522ff908e97e267.Core"(ptr %return, ptr %.loc24_20.2.temp), !dbg !95
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc24_20.2.temp), !dbg !94
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc24_19.1.temp), !dbg !93
|
||||
// CHECK:STDOUT: ret void, !dbg !95
|
||||
// CHECK:STDOUT: %.loc24_20.1.temp = alloca { i32 }, align 4, !dbg !90
|
||||
// CHECK:STDOUT: %.loc24_20.2.temp = alloca { i32 }, align 4, !dbg !90
|
||||
// CHECK:STDOUT: %.loc24_19.1.temp = alloca { i32 }, align 4, !dbg !89
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc24_20.1.temp), !dbg !90
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc24_20.2.temp), !dbg !90
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc24_19.1.temp), !dbg !89
|
||||
// CHECK:STDOUT: call void @"_CConvert.A.Main:ImplicitAs.a6a60dfee2d7d273.Core"(ptr %.loc24_19.1.temp, ptr %a), !dbg !89
|
||||
// CHECK:STDOUT: call void @"_CF.61ea2aba74ab3bf1:I.Main"(ptr %.loc24_20.2.temp, ptr %.loc24_19.1.temp), !dbg !90
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.9522ff908e97e267.Core"(ptr %return, ptr %.loc24_20.2.temp), !dbg !91
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc24_20.2.temp), !dbg !90
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc24_19.1.temp), !dbg !89
|
||||
// CHECK:STDOUT: ret void, !dbg !91
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
|
||||
@@ -234,36 +227,32 @@ fn CallCallGeneric(c: C(()), b: B) -> A {
|
||||
// CHECK:STDOUT: !61 = !DILocalVariable(arg: 1, scope: !60, type: !20)
|
||||
// CHECK:STDOUT: !62 = !DILocation(line: 20, column: 3, scope: !60)
|
||||
// CHECK:STDOUT: !63 = !{!61}
|
||||
// CHECK:STDOUT: !64 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.f58524831c37807e:core.Destroy.Core", scope: null, file: !18, line: 20, type: !25, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !67)
|
||||
// CHECK:STDOUT: !64 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.f58524831c37807e:core.Destroy.Core", scope: null, file: !18, line: 20, type: !25, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !67)
|
||||
// CHECK:STDOUT: !65 = !DILocalVariable(arg: 1, scope: !64, type: !20)
|
||||
// CHECK:STDOUT: !66 = !DILocation(line: 20, column: 3, scope: !64)
|
||||
// CHECK:STDOUT: !67 = !{!65}
|
||||
// CHECK:STDOUT: !68 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.f58524831c37807e:core.Destroy.Core", scope: null, file: !18, line: 20, type: !25, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !71)
|
||||
// CHECK:STDOUT: !69 = !DILocalVariable(arg: 1, scope: !68, type: !20)
|
||||
// CHECK:STDOUT: !68 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !71)
|
||||
// CHECK:STDOUT: !69 = !DILocalVariable(arg: 1, scope: !68, type: !21)
|
||||
// CHECK:STDOUT: !70 = !DILocation(line: 20, column: 3, scope: !68)
|
||||
// CHECK:STDOUT: !71 = !{!69}
|
||||
// CHECK:STDOUT: !72 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !75)
|
||||
// CHECK:STDOUT: !72 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !75)
|
||||
// CHECK:STDOUT: !73 = !DILocalVariable(arg: 1, scope: !72, type: !21)
|
||||
// CHECK:STDOUT: !74 = !DILocation(line: 20, column: 3, scope: !72)
|
||||
// CHECK:STDOUT: !75 = !{!73}
|
||||
// CHECK:STDOUT: !76 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.0bfe8bb35a2876b2:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !79)
|
||||
// CHECK:STDOUT: !76 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !79)
|
||||
// CHECK:STDOUT: !77 = !DILocalVariable(arg: 1, scope: !76, type: !21)
|
||||
// CHECK:STDOUT: !78 = !DILocation(line: 20, column: 3, scope: !76)
|
||||
// CHECK:STDOUT: !79 = !{!77}
|
||||
// CHECK:STDOUT: !80 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !83)
|
||||
// CHECK:STDOUT: !80 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !83)
|
||||
// CHECK:STDOUT: !81 = !DILocalVariable(arg: 1, scope: !80, type: !21)
|
||||
// CHECK:STDOUT: !82 = !DILocation(line: 20, column: 3, scope: !80)
|
||||
// CHECK:STDOUT: !83 = !{!81}
|
||||
// CHECK:STDOUT: !84 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !18, line: 20, type: !27, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !87)
|
||||
// CHECK:STDOUT: !84 = distinct !DISubprogram(name: "Test", linkageName: "_CTest.Main", scope: null, file: !18, line: 23, type: !23, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !92)
|
||||
// CHECK:STDOUT: !85 = !DILocalVariable(arg: 1, scope: !84, type: !21)
|
||||
// CHECK:STDOUT: !86 = !DILocation(line: 20, column: 3, scope: !84)
|
||||
// CHECK:STDOUT: !87 = !{!85}
|
||||
// CHECK:STDOUT: !88 = distinct !DISubprogram(name: "Test", linkageName: "_CTest.Main", scope: null, file: !18, line: 23, type: !23, spFlags: DISPFlagDefinition, unit: !19, retainedNodes: !96)
|
||||
// CHECK:STDOUT: !89 = !DILocalVariable(arg: 1, scope: !88, type: !21)
|
||||
// CHECK:STDOUT: !93 = !DILocation(line: 24, column: 19, scope: !88)
|
||||
// CHECK:STDOUT: !94 = !DILocation(line: 24, column: 10, scope: !88)
|
||||
// CHECK:STDOUT: !95 = !DILocation(line: 24, column: 3, scope: !88)
|
||||
// CHECK:STDOUT: !96 = !{!89}
|
||||
// CHECK:STDOUT: !89 = !DILocation(line: 24, column: 19, scope: !84)
|
||||
// CHECK:STDOUT: !90 = !DILocation(line: 24, column: 10, scope: !84)
|
||||
// CHECK:STDOUT: !91 = !DILocation(line: 24, column: 3, scope: !84)
|
||||
// CHECK:STDOUT: !92 = !{!85}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; ---
|
||||
// CHECK:STDOUT: ; ModuleID = 'generic_thunk.carbon'
|
||||
@@ -273,68 +262,54 @@ fn CallCallGeneric(c: C(()), b: B) -> A {
|
||||
// CHECK:STDOUT: @B.val.loc18_43 = internal constant {} zeroinitializer
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define void @"_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core"(ptr sret({}) %return, ptr %self) #0 !dbg !101 {
|
||||
// CHECK:STDOUT: define void @"_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core"(ptr sret({}) %return, ptr %self) #0 !dbg !97 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %return, ptr align 1 @A.val.loc7_45, i64 0, i1 false), !dbg !102
|
||||
// CHECK:STDOUT: ret void, !dbg !102
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.cb8adced19392b99:core.Destroy.Core"(ptr %self) #0 !dbg !104 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %return, ptr align 1 @A.val.loc7_45, i64 0, i1 false), !dbg !106
|
||||
// CHECK:STDOUT: ret void, !dbg !106
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.cb8adced19392b99:core.Destroy.Core"(ptr %self) #0 !dbg !108 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !108 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !110
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !112 {
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core"(ptr %self) #0 !dbg !112 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !114
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self) #0 !dbg !116 {
|
||||
// CHECK:STDOUT: define void @_CCall.Main(ptr sret({}) %return, ptr %c, ptr %b) #0 !dbg !116 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %self), !dbg !118
|
||||
// CHECK:STDOUT: ret void, !dbg !118
|
||||
// CHECK:STDOUT: %.loc22_23.1.temp = alloca {}, align 1, !dbg !123
|
||||
// CHECK:STDOUT: %.loc22_23.3.temp = alloca {}, align 1, !dbg !123
|
||||
// CHECK:STDOUT: %.loc22_22.1.temp = alloca {}, align 1, !dbg !124
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc22_23.1.temp), !dbg !123
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc22_23.3.temp), !dbg !123
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc22_22.1.temp), !dbg !124
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core"(ptr %.loc22_22.1.temp, ptr %b), !dbg !124
|
||||
// CHECK:STDOUT: call void @"_CF.C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f"(ptr %.loc22_23.3.temp, ptr %c, ptr %.loc22_22.1.temp), !dbg !123
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core"(ptr %return, ptr %.loc22_23.3.temp), !dbg !125
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc22_23.3.temp), !dbg !123
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core"(ptr %.loc22_22.1.temp), !dbg !124
|
||||
// CHECK:STDOUT: ret void, !dbg !125
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSubobjectDestroy.5a23cc09585c55d2:core.Destroy.Core"(ptr %self) #0 !dbg !120 {
|
||||
// CHECK:STDOUT: define void @_CCallCallGeneric.Main(ptr sret({}) %return, ptr %c, ptr %b) #0 !dbg !127 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: ret void, !dbg !122
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define weak_odr void @"_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core"(ptr %self) #0 !dbg !124 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CSubobjectDestroy.5a23cc09585c55d2:core.Destroy.Core"(ptr %self), !dbg !126
|
||||
// CHECK:STDOUT: ret void, !dbg !126
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define void @_CCall.Main(ptr sret({}) %return, ptr %c, ptr %b) #0 !dbg !128 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc22_23.1.temp = alloca {}, align 1, !dbg !135
|
||||
// CHECK:STDOUT: %.loc22_23.3.temp = alloca {}, align 1, !dbg !135
|
||||
// CHECK:STDOUT: %.loc22_22.1.temp = alloca {}, align 1, !dbg !136
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc22_23.1.temp), !dbg !135
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc22_23.3.temp), !dbg !135
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc22_22.1.temp), !dbg !136
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core"(ptr %.loc22_22.1.temp, ptr %b), !dbg !136
|
||||
// CHECK:STDOUT: call void @"_CF.C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f"(ptr %.loc22_23.3.temp, ptr %c, ptr %.loc22_22.1.temp), !dbg !135
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core"(ptr %return, ptr %.loc22_23.3.temp), !dbg !137
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc22_23.3.temp), !dbg !135
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core"(ptr %.loc22_22.1.temp), !dbg !136
|
||||
// CHECK:STDOUT: call void @_CCallGeneric.Main.8a681e94b982e379(ptr %return, ptr %c, ptr %b), !dbg !136
|
||||
// CHECK:STDOUT: ret void, !dbg !137
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define void @_CCallCallGeneric.Main(ptr sret({}) %return, ptr %c, ptr %b) #0 !dbg !139 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @_CCallGeneric.Main.8a681e94b982e379(ptr %return, ptr %c, ptr %b), !dbg !148
|
||||
// CHECK:STDOUT: ret void, !dbg !149
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
|
||||
// CHECK:STDOUT: declare void @llvm.memcpy.p0.p0.i64(ptr noalias writeonly captures(none), ptr noalias readonly captures(none), i64, i1 immarg) #1
|
||||
// CHECK:STDOUT:
|
||||
@@ -342,32 +317,32 @@ fn CallCallGeneric(c: C(()), b: B) -> A {
|
||||
// CHECK:STDOUT: declare void @llvm.lifetime.start.p0(ptr captures(none)) #1
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define linkonce_odr void @"_CF.C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f"(ptr sret({}) %return, ptr %self, ptr %_) #0 !dbg !151 {
|
||||
// CHECK:STDOUT: define linkonce_odr void @"_CF.C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f"(ptr sret({}) %return, ptr %self, ptr %_) #0 !dbg !139 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %return, ptr align 1 @B.val.loc18_43, i64 0, i1 false), !dbg !158
|
||||
// CHECK:STDOUT: ret void, !dbg !158
|
||||
// CHECK:STDOUT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 %return, ptr align 1 @B.val.loc18_43, i64 0, i1 false), !dbg !146
|
||||
// CHECK:STDOUT: ret void, !dbg !146
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: nounwind
|
||||
// CHECK:STDOUT: define linkonce_odr void @_CCallGeneric.Main.8a681e94b982e379(ptr sret({}) %return, ptr %c, ptr %b) #0 !dbg !160 {
|
||||
// CHECK:STDOUT: define linkonce_odr void @_CCallGeneric.Main.8a681e94b982e379(ptr sret({}) %return, ptr %c, ptr %b) #0 !dbg !148 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: call void @"_CF:thunk:I.eca2102529696f40.Main:C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f"(ptr %return, ptr %c, ptr %b), !dbg !167
|
||||
// CHECK:STDOUT: ret void, !dbg !169
|
||||
// CHECK:STDOUT: call void @"_CF:thunk:I.eca2102529696f40.Main:C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f"(ptr %return, ptr %c, ptr %b), !dbg !155
|
||||
// CHECK:STDOUT: ret void, !dbg !157
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; Function Attrs: alwaysinline nounwind
|
||||
// CHECK:STDOUT: define linkonce_odr void @"_CF:thunk:I.eca2102529696f40.Main:C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f"(ptr sret({}) %return, ptr %self, ptr %x) #2 !dbg !171 {
|
||||
// CHECK:STDOUT: define linkonce_odr void @"_CF:thunk:I.eca2102529696f40.Main:C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f"(ptr sret({}) %return, ptr %self, ptr %x) #2 !dbg !159 {
|
||||
// CHECK:STDOUT: entry:
|
||||
// CHECK:STDOUT: %.loc18_32.2.temp = alloca {}, align 1, !dbg !175
|
||||
// CHECK:STDOUT: %.6.temp = alloca {}, align 1, !dbg !174
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc18_32.2.temp), !dbg !175
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.6.temp), !dbg !174
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core"(ptr %.6.temp, ptr %x), !dbg !174
|
||||
// CHECK:STDOUT: call void @"_CF.C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f"(ptr %.loc18_32.2.temp, ptr %self, ptr %.6.temp), !dbg !175
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core"(ptr %return, ptr %.loc18_32.2.temp), !dbg !175
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc18_32.2.temp), !dbg !175
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core"(ptr %.6.temp), !dbg !174
|
||||
// CHECK:STDOUT: ret void, !dbg !175
|
||||
// CHECK:STDOUT: %.loc18_32.2.temp = alloca {}, align 1, !dbg !163
|
||||
// CHECK:STDOUT: %.6.temp = alloca {}, align 1, !dbg !162
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.loc18_32.2.temp), !dbg !163
|
||||
// CHECK:STDOUT: call void @llvm.lifetime.start.p0(ptr %.6.temp), !dbg !162
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core"(ptr %.6.temp, ptr %x), !dbg !162
|
||||
// CHECK:STDOUT: call void @"_CF.C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f"(ptr %.loc18_32.2.temp, ptr %self, ptr %.6.temp), !dbg !163
|
||||
// CHECK:STDOUT: call void @"_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core"(ptr %return, ptr %.loc18_32.2.temp), !dbg !163
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core"(ptr %.loc18_32.2.temp), !dbg !163
|
||||
// CHECK:STDOUT: call void @"_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core"(ptr %.6.temp), !dbg !162
|
||||
// CHECK:STDOUT: ret void, !dbg !163
|
||||
// CHECK:STDOUT: }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: ; uselistorder directives
|
||||
@@ -377,7 +352,7 @@ fn CallCallGeneric(c: C(()), b: B) -> A {
|
||||
// CHECK:STDOUT: attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
|
||||
// CHECK:STDOUT: attributes #2 = { alwaysinline nounwind }
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !llvm.dbg.cu = !{!98}
|
||||
// CHECK:STDOUT: !llvm.dbg.cu = !{!94}
|
||||
// CHECK:STDOUT: !llvm.module.flags = !{!2, !3}
|
||||
// CHECK:STDOUT:
|
||||
// CHECK:STDOUT: !2 = !{i32 7, !"Dwarf Version", i32 5}
|
||||
@@ -387,62 +362,54 @@ fn CallCallGeneric(c: C(()), b: B) -> A {
|
||||
// CHECK:STDOUT: !23 = !DISubroutineType(types: !22)
|
||||
// CHECK:STDOUT: !26 = !{null, !21}
|
||||
// CHECK:STDOUT: !27 = !DISubroutineType(types: !26)
|
||||
// CHECK:STDOUT: !97 = !DIFile(filename: "generic_thunk.carbon", directory: "")
|
||||
// CHECK:STDOUT: !98 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !97, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !99 = !{!21, !21, !21}
|
||||
// CHECK:STDOUT: !100 = !DISubroutineType(types: !99)
|
||||
// CHECK:STDOUT: !101 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core", scope: null, file: !97, line: 7, type: !23, spFlags: DISPFlagDefinition, unit: !98, retainedNodes: !107)
|
||||
// CHECK:STDOUT: !102 = !DILocalVariable(arg: 1, scope: !101, type: !21)
|
||||
// CHECK:STDOUT: !106 = !DILocation(line: 7, column: 36, scope: !101)
|
||||
// CHECK:STDOUT: !107 = !{!102}
|
||||
// CHECK:STDOUT: !108 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.cb8adced19392b99:core.Destroy.Core", scope: null, file: !97, line: 18, type: !27, spFlags: DISPFlagDefinition, unit: !98, retainedNodes: !111)
|
||||
// CHECK:STDOUT: !93 = !DIFile(filename: "generic_thunk.carbon", directory: "")
|
||||
// CHECK:STDOUT: !94 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !93, producer: "carbon", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug)
|
||||
// CHECK:STDOUT: !95 = !{!21, !21, !21}
|
||||
// CHECK:STDOUT: !96 = !DISubroutineType(types: !95)
|
||||
// CHECK:STDOUT: !97 = distinct !DISubprogram(name: "Convert", linkageName: "_CConvert.B.Main:ImplicitAs.bd4fb75a414fe858.Core", scope: null, file: !93, line: 7, type: !23, spFlags: DISPFlagDefinition, unit: !94, retainedNodes: !103)
|
||||
// CHECK:STDOUT: !98 = !DILocalVariable(arg: 1, scope: !97, type: !21)
|
||||
// CHECK:STDOUT: !102 = !DILocation(line: 7, column: 36, scope: !97)
|
||||
// CHECK:STDOUT: !103 = !{!98}
|
||||
// CHECK:STDOUT: !104 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.cb8adced19392b99:core.Destroy.Core", scope: null, file: !93, line: 18, type: !27, spFlags: DISPFlagDefinition, unit: !94, retainedNodes: !107)
|
||||
// CHECK:STDOUT: !105 = !DILocalVariable(arg: 1, scope: !104, type: !21)
|
||||
// CHECK:STDOUT: !106 = !DILocation(line: 18, column: 3, scope: !104)
|
||||
// CHECK:STDOUT: !107 = !{!105}
|
||||
// CHECK:STDOUT: !108 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !93, line: 18, type: !27, spFlags: DISPFlagDefinition, unit: !94, retainedNodes: !111)
|
||||
// CHECK:STDOUT: !109 = !DILocalVariable(arg: 1, scope: !108, type: !21)
|
||||
// CHECK:STDOUT: !110 = !DILocation(line: 18, column: 3, scope: !108)
|
||||
// CHECK:STDOUT: !111 = !{!109}
|
||||
// CHECK:STDOUT: !112 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !97, line: 18, type: !27, spFlags: DISPFlagDefinition, unit: !98, retainedNodes: !115)
|
||||
// CHECK:STDOUT: !112 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core", scope: null, file: !93, type: !27, spFlags: DISPFlagDefinition, unit: !94, retainedNodes: !115)
|
||||
// CHECK:STDOUT: !113 = !DILocalVariable(arg: 1, scope: !112, type: !21)
|
||||
// CHECK:STDOUT: !114 = !DILocation(line: 18, column: 3, scope: !112)
|
||||
// CHECK:STDOUT: !114 = !DILocation(line: 0, scope: !112)
|
||||
// CHECK:STDOUT: !115 = !{!113}
|
||||
// CHECK:STDOUT: !116 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.8c4b83ecd900f1ea:core.Destroy.Core", scope: null, file: !97, line: 18, type: !27, spFlags: DISPFlagDefinition, unit: !98, retainedNodes: !119)
|
||||
// CHECK:STDOUT: !116 = distinct !DISubprogram(name: "Call", linkageName: "_CCall.Main", scope: null, file: !93, line: 21, type: !96, spFlags: DISPFlagDefinition, unit: !94, retainedNodes: !126)
|
||||
// CHECK:STDOUT: !117 = !DILocalVariable(arg: 1, scope: !116, type: !21)
|
||||
// CHECK:STDOUT: !118 = !DILocation(line: 18, column: 3, scope: !116)
|
||||
// CHECK:STDOUT: !119 = !{!117}
|
||||
// CHECK:STDOUT: !120 = distinct !DISubprogram(name: "SubobjectDestroy", linkageName: "_CSubobjectDestroy.5a23cc09585c55d2:core.Destroy.Core", scope: null, file: !97, type: !27, spFlags: DISPFlagDefinition, unit: !98, retainedNodes: !123)
|
||||
// CHECK:STDOUT: !121 = !DILocalVariable(arg: 1, scope: !120, type: !21)
|
||||
// CHECK:STDOUT: !122 = !DILocation(line: 0, scope: !120)
|
||||
// CHECK:STDOUT: !123 = !{!121}
|
||||
// CHECK:STDOUT: !124 = distinct !DISubprogram(name: "SelfDestruct", linkageName: "_CSelfDestruct.5a23cc09585c55d2:core.Destroy.Core", scope: null, file: !97, type: !27, spFlags: DISPFlagDefinition, unit: !98, retainedNodes: !127)
|
||||
// CHECK:STDOUT: !125 = !DILocalVariable(arg: 1, scope: !124, type: !21)
|
||||
// CHECK:STDOUT: !126 = !DILocation(line: 0, scope: !124)
|
||||
// CHECK:STDOUT: !127 = !{!125}
|
||||
// CHECK:STDOUT: !128 = distinct !DISubprogram(name: "Call", linkageName: "_CCall.Main", scope: null, file: !97, line: 21, type: !100, spFlags: DISPFlagDefinition, unit: !98, retainedNodes: !138)
|
||||
// CHECK:STDOUT: !129 = !DILocalVariable(arg: 1, scope: !128, type: !21)
|
||||
// CHECK:STDOUT: !130 = !DILocalVariable(arg: 2, scope: !128, type: !21)
|
||||
// CHECK:STDOUT: !135 = !DILocation(line: 22, column: 10, scope: !128)
|
||||
// CHECK:STDOUT: !136 = !DILocation(line: 22, column: 22, scope: !128)
|
||||
// CHECK:STDOUT: !137 = !DILocation(line: 22, column: 3, scope: !128)
|
||||
// CHECK:STDOUT: !138 = !{!129, !130}
|
||||
// CHECK:STDOUT: !139 = distinct !DISubprogram(name: "CallCallGeneric", linkageName: "_CCallCallGeneric.Main", scope: null, file: !97, line: 29, type: !100, spFlags: DISPFlagDefinition, unit: !98, retainedNodes: !150)
|
||||
// CHECK:STDOUT: !118 = !DILocalVariable(arg: 2, scope: !116, type: !21)
|
||||
// CHECK:STDOUT: !123 = !DILocation(line: 22, column: 10, scope: !116)
|
||||
// CHECK:STDOUT: !124 = !DILocation(line: 22, column: 22, scope: !116)
|
||||
// CHECK:STDOUT: !125 = !DILocation(line: 22, column: 3, scope: !116)
|
||||
// CHECK:STDOUT: !126 = !{!117, !118}
|
||||
// CHECK:STDOUT: !127 = distinct !DISubprogram(name: "CallCallGeneric", linkageName: "_CCallCallGeneric.Main", scope: null, file: !93, line: 29, type: !96, spFlags: DISPFlagDefinition, unit: !94, retainedNodes: !138)
|
||||
// CHECK:STDOUT: !128 = !DILocalVariable(arg: 1, scope: !127, type: !21)
|
||||
// CHECK:STDOUT: !129 = !DILocalVariable(arg: 2, scope: !127, type: !21)
|
||||
// CHECK:STDOUT: !136 = !DILocation(line: 30, column: 10, scope: !127)
|
||||
// CHECK:STDOUT: !137 = !DILocation(line: 30, column: 3, scope: !127)
|
||||
// CHECK:STDOUT: !138 = !{!128, !129}
|
||||
// CHECK:STDOUT: !139 = distinct !DISubprogram(name: "F", linkageName: "_CF.C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f", scope: null, file: !93, line: 18, type: !96, spFlags: DISPFlagDefinition, unit: !94, retainedNodes: !147)
|
||||
// CHECK:STDOUT: !140 = !DILocalVariable(arg: 1, scope: !139, type: !21)
|
||||
// CHECK:STDOUT: !141 = !DILocalVariable(arg: 2, scope: !139, type: !21)
|
||||
// CHECK:STDOUT: !148 = !DILocation(line: 30, column: 10, scope: !139)
|
||||
// CHECK:STDOUT: !149 = !DILocation(line: 30, column: 3, scope: !139)
|
||||
// CHECK:STDOUT: !150 = !{!140, !141}
|
||||
// CHECK:STDOUT: !151 = distinct !DISubprogram(name: "F", linkageName: "_CF.C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f", scope: null, file: !97, line: 18, type: !100, spFlags: DISPFlagDefinition, unit: !98, retainedNodes: !159)
|
||||
// CHECK:STDOUT: !152 = !DILocalVariable(arg: 1, scope: !151, type: !21)
|
||||
// CHECK:STDOUT: !153 = !DILocalVariable(arg: 2, scope: !151, type: !21)
|
||||
// CHECK:STDOUT: !158 = !DILocation(line: 18, column: 34, scope: !151)
|
||||
// CHECK:STDOUT: !159 = !{!152, !153}
|
||||
// CHECK:STDOUT: !160 = distinct !DISubprogram(name: "CallGeneric", linkageName: "_CCallGeneric.Main.8a681e94b982e379", scope: null, file: !97, line: 25, type: !100, spFlags: DISPFlagDefinition, unit: !98, retainedNodes: !170)
|
||||
// CHECK:STDOUT: !161 = !DILocalVariable(arg: 1, scope: !160, type: !21)
|
||||
// CHECK:STDOUT: !162 = !DILocalVariable(arg: 2, scope: !160, type: !21)
|
||||
// CHECK:STDOUT: !167 = !DILocation(line: 26, column: 10, scope: !160)
|
||||
// CHECK:STDOUT: !169 = !DILocation(line: 26, column: 3, scope: !160)
|
||||
// CHECK:STDOUT: !170 = !{!161, !162}
|
||||
// CHECK:STDOUT: !171 = distinct !DISubprogram(name: "F", linkageName: "_CF:thunk:I.eca2102529696f40.Main:C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f", scope: null, file: !97, line: 18, type: !100, spFlags: DISPFlagDefinition, unit: !98, retainedNodes: !176)
|
||||
// CHECK:STDOUT: !172 = !DILocalVariable(arg: 1, scope: !171, type: !21)
|
||||
// CHECK:STDOUT: !173 = !DILocalVariable(arg: 2, scope: !171, type: !21)
|
||||
// CHECK:STDOUT: !174 = !DILocation(line: 0, scope: !171)
|
||||
// CHECK:STDOUT: !175 = !DILocation(line: 18, column: 3, scope: !171)
|
||||
// CHECK:STDOUT: !176 = !{!172, !173}
|
||||
// CHECK:STDOUT: !146 = !DILocation(line: 18, column: 34, scope: !139)
|
||||
// CHECK:STDOUT: !147 = !{!140, !141}
|
||||
// CHECK:STDOUT: !148 = distinct !DISubprogram(name: "CallGeneric", linkageName: "_CCallGeneric.Main.8a681e94b982e379", scope: null, file: !93, line: 25, type: !96, spFlags: DISPFlagDefinition, unit: !94, retainedNodes: !158)
|
||||
// CHECK:STDOUT: !149 = !DILocalVariable(arg: 1, scope: !148, type: !21)
|
||||
// CHECK:STDOUT: !150 = !DILocalVariable(arg: 2, scope: !148, type: !21)
|
||||
// CHECK:STDOUT: !155 = !DILocation(line: 26, column: 10, scope: !148)
|
||||
// CHECK:STDOUT: !157 = !DILocation(line: 26, column: 3, scope: !148)
|
||||
// CHECK:STDOUT: !158 = !{!149, !150}
|
||||
// CHECK:STDOUT: !159 = distinct !DISubprogram(name: "F", linkageName: "_CF:thunk:I.eca2102529696f40.Main:C.eb057aa32837c84e.Main:I.eb057aa32837c84e.Main.e43630e9a6c38c3f", scope: null, file: !93, line: 18, type: !96, spFlags: DISPFlagDefinition, unit: !94, retainedNodes: !164)
|
||||
// CHECK:STDOUT: !160 = !DILocalVariable(arg: 1, scope: !159, type: !21)
|
||||
// CHECK:STDOUT: !161 = !DILocalVariable(arg: 2, scope: !159, type: !21)
|
||||
// CHECK:STDOUT: !162 = !DILocation(line: 0, scope: !159)
|
||||
// CHECK:STDOUT: !163 = !DILocation(line: 18, column: 3, scope: !159)
|
||||
// CHECK:STDOUT: !164 = !{!160, !161}
|
||||
// CHECK:STDOUT:
|
||||
|
||||
Reference in New Issue
Block a user