129 lines · plain
1; RUN: llc < %s -filetype=obj -o %t2; RUN: llvm-dwarfdump -v %t | FileCheck %s3 4; C++ source to regenerate:5; class deleted {6; public:7; // Defaulted on purpose, so as to facilitate object creation8; deleted() = default;9; 10; deleted(const deleted &) = delete;11; deleted &operator=(const deleted &) = delete;12; 13; deleted(deleted &&) = delete;14; deleted &operator=(deleted &&) = delete;15;16; void func() && = delete;17; static void bar() = delete;18; 19; ~deleted() = default;20; };21; 22; void foo() {23; deleted obj1;24; }25; $ clang++ -O0 -g -gdwarf-5 debug-info-deleted.cpp -c26 27 28; CHECK: .debug_abbrev contents:29 30; CHECK: [7] DW_TAG_subprogram DW_CHILDREN_yes31; CHECK: DW_AT_deleted DW_FORM_flag_present32; CHECK: [9] DW_TAG_subprogram DW_CHILDREN_yes33; CHECK: DW_AT_deleted DW_FORM_flag_present34 35; CHECK: .debug_info contents:36 37; CHECK: DW_TAG_subprogram [7]38; CHECK-NEXT: DW_AT_name [DW_FORM_strx1] (indexed (00000006) string = "deleted") 39; CHECK: DW_AT_deleted [DW_FORM_flag_present] (true)40 41; CHECK: DW_TAG_subprogram [9]42; CHECK-NEXT: DW_AT_linkage_name [DW_FORM_strx1] (indexed (00000007) string = "_ZN7deletedaSERKS_") 43; CHECK: DW_AT_deleted [DW_FORM_flag_present] (true)44 45; CHECK: DW_TAG_subprogram [7]46; CHECK-NEXT: DW_AT_name [DW_FORM_strx1] (indexed (00000006) string = "deleted") 47; CHECK: DW_AT_deleted [DW_FORM_flag_present] (true)48 49; CHECK: DW_TAG_subprogram [9]50; CHECK-NEXT: DW_AT_linkage_name [DW_FORM_strx1] (indexed (00000009) string = "_ZN7deletedaSEOS_")51; CHECK-NEXT: DW_AT_name [DW_FORM_strx1] (indexed (00000008) string = "operator=")52; CHECK: DW_AT_deleted [DW_FORM_flag_present] (true)53 54; CHECK: DW_TAG_subprogram [10]55; CHECK-NEXT: DW_AT_linkage_name [DW_FORM_strx1] (indexed (0000000b) string = "_ZNO7deleted4funcEv")56; CHECK-NEXT: DW_AT_name [DW_FORM_strx1] (indexed (0000000c) string = "func")57; CHECK: DW_AT_deleted [DW_FORM_flag_present] (true)58 59; CHECK: DW_TAG_subprogram [11]60; CHECK-NEXT: DW_AT_linkage_name [DW_FORM_strx1] (indexed (0000000d) string = "_ZN7deleted3barEv")61; CHECK-NEXT: DW_AT_name [DW_FORM_strx1] (indexed (0000000e) string = "bar")62; CHECK: DW_AT_deleted [DW_FORM_flag_present] (true)63 64; ModuleID = 'debug-info-deleted.cpp'65source_filename = "debug-info-deleted.cpp"66target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"67target triple = "x86_64-unknown-linux-gnu"68 69%class.deleted = type { i8 }70 71; Function Attrs: noinline nounwind optnone uwtable72define dso_local void @_Z3foov() #0 !dbg !7 {73 %1 = alloca %class.deleted, align 174 call void @llvm.dbg.declare(metadata ptr %1, metadata !10, metadata !DIExpression()), !dbg !3975 ret void, !dbg !4076}77 78; Function Attrs: nounwind readnone speculatable willreturn79declare void @llvm.dbg.declare(metadata, metadata, metadata) #180 81attributes #0 = { noinline nounwind optnone uwtable }82attributes #1 = { nounwind readnone speculatable willreturn }83 84!llvm.dbg.cu = !{!0}85!llvm.module.flags = !{!3, !4, !5}86!llvm.ident = !{!6}87 88!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang version 10.0.0 (https://github.com/llvm/llvm-project.git 715c47d5de9aa8860050992a7aaf27dca53f7f4a)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, nameTableKind: None)89!1 = !DIFile(filename: "debug-info-deleted.cpp", directory: "/home/sourabh/work/dwarf/c_c++/c++11", checksumkind: CSK_MD5, checksum: "49dc56907586479c64634558b060292d")90!2 = !{}91!3 = !{i32 2, !"Dwarf Version", i32 5}92!4 = !{i32 2, !"Debug Info Version", i32 3}93!5 = !{i32 1, !"wchar_size", i32 4}94!6 = !{!"clang version 10.0.0 (https://github.com/llvm/llvm-project.git 715c47d5de9aa8860050992a7aaf27dca53f7f4a)"}95!7 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !1, file: !1, line: 14, type: !8, scopeLine: 14, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2)96!8 = !DISubroutineType(types: !9)97!9 = !{null}98!10 = !DILocalVariable(name: "obj1", scope: !7, file: !1, line: 15, type: !11)99!11 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "deleted", file: !1, line: 1, size: 8, flags: DIFlagTypePassByReference, elements: !12, identifier: "_ZTS7deleted")100!12 = !{!13, !17, !22, !26, !30, !33, !34, !36}101!13 = !DISubprogram(name: "deleted", scope: !11, file: !1, line: 3, type: !14, scopeLine: 3, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0)102!14 = !DISubroutineType(types: !15)103!15 = !{null, !16}104!16 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer)105!17 = !DISubprogram(name: "deleted", scope: !11, file: !1, line: 5, type: !18, scopeLine: 5, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagDeleted)106!18 = !DISubroutineType(types: !19)107!19 = !{null, !16, !20}108!20 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !21, size: 64)109!21 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !11)110!22 = !DISubprogram(name: "operator=", linkageName: "_ZN7deletedaSERKS_", scope: !11, file: !1, line: 6, type: !23, scopeLine: 6, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagDeleted)111!23 = !DISubroutineType(types: !24)112!24 = !{!25, !16, !20}113!25 = !DIDerivedType(tag: DW_TAG_reference_type, baseType: !11, size: 64)114!26 = !DISubprogram(name: "deleted", scope: !11, file: !1, line: 8, type: !27, scopeLine: 8, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagDeleted)115!27 = !DISubroutineType(types: !28)116!28 = !{null, !16, !29}117!29 = !DIDerivedType(tag: DW_TAG_rvalue_reference_type, baseType: !11, size: 64)118!30 = !DISubprogram(name: "operator=", linkageName: "_ZN7deletedaSEOS_", scope: !11, file: !1, line: 9, type: !31, scopeLine: 9, flags: DIFlagPublic | DIFlagPrototyped, spFlags: DISPFlagDeleted)119!31 = !DISubroutineType(types: !32)120!32 = !{!25, !16, !29}121!33 = !DISubprogram(name: "~deleted", scope: !11, file: !1, line: 11, type: !14, scopeLine: 11, flags: DIFlagPublic | DIFlagPrototyped, spFlags: 0)122!34 = !DISubprogram(name: "func", linkageName: "_ZNO7deleted4funcEv", scope: !11, file: !1, line: 13, type: !35, scopeLine: 13, flags: DIFlagPublic | DIFlagPrototyped | DIFlagRValueReference, spFlags: DISPFlagDeleted) 123!35 = !DISubroutineType(flags: DIFlagRValueReference, types: !15) 124!36 = !DISubprogram(name: "bar", linkageName: "_ZN7deleted3barEv", scope: !11, file: !1, line: 15, type: !37, scopeLine: 15, flags: DIFlagPublic | DIFlagPrototyped | DIFlagStaticMember, spFlags: DISPFlagDeleted) 125!37 = !DISubroutineType(types: !38)126!38 = !{null}127!39 = !DILocation(line: 15, column: 13, scope: !7)128!40 = !DILocation(line: 16, column: 3, scope: !7)129