mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-10-06 09:06:21 +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:
|
||||
|
||||
Reference in New Issue
Block a user