diff options
author | Vassil Vassilev <v.g.vassilev@gmail.com> | 2016-10-26 10:13:47 +0000 |
---|---|---|
committer | Vassil Vassilev <v.g.vassilev@gmail.com> | 2016-10-26 10:13:47 +0000 |
commit | df5042ab613a71d0fee0e1ac8a36a22b1f8bc241 (patch) | |
tree | 9de937190ffb16c69018f4ca46058872171fd74f /llvm | |
parent | 4d5b99a79c6f60800d8e8f4379b9c1319facd5fe (diff) | |
download | bcm5719-llvm-df5042ab613a71d0fee0e1ac8a36a22b1f8bc241.tar.gz bcm5719-llvm-df5042ab613a71d0fee0e1ac8a36a22b1f8bc241.zip |
Revert r285181 "DebugInfo: support for DWARFv5 DW_AT_alignment attribute".
The commit broke the builds.
llvm-svn: 285183
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/docs/SourceLevelDebugging.rst | 47 | ||||
-rw-r--r-- | llvm/include/llvm/IR/DebugInfoMetadata.h | 4 | ||||
-rw-r--r-- | llvm/include/llvm/Support/Dwarf.h | 1 | ||||
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 12 | ||||
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp | 13 | ||||
-rw-r--r-- | llvm/lib/Support/Dwarf.cpp | 2 | ||||
-rw-r--r-- | llvm/test/DebugInfo/X86/align_c11.ll | 83 | ||||
-rw-r--r-- | llvm/test/DebugInfo/X86/align_cpp11.ll | 172 | ||||
-rw-r--r-- | llvm/test/DebugInfo/X86/align_objc.ll | 98 | ||||
-rw-r--r-- | llvm/test/DebugInfo/X86/dwarf-public-names.ll | 8 |
10 files changed, 28 insertions, 412 deletions
diff --git a/llvm/docs/SourceLevelDebugging.rst b/llvm/docs/SourceLevelDebugging.rst index 6f22f54ce4d..8c3142ed219 100644 --- a/llvm/docs/SourceLevelDebugging.rst +++ b/llvm/docs/SourceLevelDebugging.rst @@ -386,7 +386,7 @@ Given an integer global variable declared as follows: .. code-block:: c - _Alignas(8) int MyGlobal = 100; + int MyGlobal = 100; a C/C++ front-end would generate the following descriptors: @@ -395,59 +395,54 @@ a C/C++ front-end would generate the following descriptors: ;; ;; Define the global itself. ;; - @MyGlobal = global i32 100, align 8, !dbg !0 + @MyGlobal = global i32 100, align 4 ;; ;; List of debug info of globals ;; - !llvm.dbg.cu = !{!1} + !llvm.dbg.cu = !{!0} ;; Some unrelated metadata. !llvm.module.flags = !{!6, !7} - !llvm.ident = !{!8} - - ;; Define the global variable itself - !0 = distinct !DIGlobalVariable(name: "MyGlobal", scope: !1, file: !2, line: 1, type: !5, isLocal: false, isDefinition: true, align: 64) ;; Define the compile unit. - !1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, - producer: "clang version 4.0.0 (http://llvm.org/git/clang.git ae4deadbea242e8ea517eef662c30443f75bd086) (http://llvm.org/git/llvm.git 818b4c1539df3e51dc7e62c89ead4abfd348827d)", - isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, - enums: !3, globals: !4) + !0 = !DICompileUnit(language: DW_LANG_C99, file: !1, + producer: + "clang version 3.7.0 (trunk 231150) (llvm/trunk 231154)", + isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, + enums: !2, retainedTypes: !2, subprograms: !2, globals: + !3, imports: !2) ;; ;; Define the file ;; - !2 = !DIFile(filename: "/dev/stdin", + !1 = !DIFile(filename: "/dev/stdin", directory: "/Users/dexonsmith/data/llvm/debug-info") ;; An empty array. - !3 = !{} + !2 = !{} ;; The Array of Global Variables - !4 = !{!0} + !3 = !{!4} + + ;; + ;; Define the global variable itself. + ;; + !4 = !DIGlobalVariable(name: "MyGlobal", scope: !0, file: !1, line: 1, + type: !5, isLocal: false, isDefinition: true, + variable: i32* @MyGlobal) ;; ;; Define the type ;; - !5 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) + !5 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed) ;; Dwarf version to output. - !6 = !{i32 2, !"Dwarf Version", i32 4} + !6 = !{i32 2, !"Dwarf Version", i32 2} ;; Debug info schema version. !7 = !{i32 2, !"Debug Info Version", i32 3} - ;; Compiler identification - !8 = !{!"clang version 4.0.0 (http://llvm.org/git/clang.git ae4deadbea242e8ea517eef662c30443f75bd086) (http://llvm.org/git/llvm.git 818b4c1539df3e51dc7e62c89ead4abfd348827d)"} - - -The align value in DIGlobalVariable description specifies variable alignment in -case it was forced by C11 _Alignas(), C++11 alignas() keywords or compiler -attribute __attribute__((aligned ())). In other case (when this field is missing) -alignment is considered default. This is used when producing DWARF output -for DW_AT_alignment value. - C/C++ function information -------------------------- diff --git a/llvm/include/llvm/IR/DebugInfoMetadata.h b/llvm/include/llvm/IR/DebugInfoMetadata.h index b97054204fd..a4c103c9504 100644 --- a/llvm/include/llvm/IR/DebugInfoMetadata.h +++ b/llvm/include/llvm/IR/DebugInfoMetadata.h @@ -1842,8 +1842,8 @@ public: StringRef getName() const { return getStringOperand(1); } DIFile *getFile() const { return cast_or_null<DIFile>(getRawFile()); } DITypeRef getType() const { return DITypeRef(getRawType()); } - DIAlignment getAlignInBits() const { return AlignInBits; } - DIAlignment getAlignInBytes() const { return getAlignInBits() / CHAR_BIT; } + uint64_t getAlignInBits() const { return AlignInBits; } + uint64_t getAlignInBytes() const { return getAlignInBits() / CHAR_BIT; } StringRef getFilename() const { if (auto *F = getFile()) diff --git a/llvm/include/llvm/Support/Dwarf.h b/llvm/include/llvm/Support/Dwarf.h index 8448dae4124..fa7c6486659 100644 --- a/llvm/include/llvm/Support/Dwarf.h +++ b/llvm/include/llvm/Support/Dwarf.h @@ -198,7 +198,6 @@ enum Attribute : uint16_t { DW_AT_rvalue_reference = 0x78, DW_AT_macros = 0x79, DW_AT_noreturn = 0x87, - DW_AT_alignment = 0x88, DW_AT_lo_user = 0x2000, DW_AT_hi_user = 0x3fff, diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index bb3d02cce8b..025e69354d1 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -118,10 +118,6 @@ DIE *DwarfCompileUnit::getOrCreateGlobalVariableDIE( else addGlobalName(GV->getName(), *VariableDIE, DeclContext); - if (DIAlignment AlignInBytes = GV->getAlignInBytes()) - addUInt(*VariableDIE, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata, - AlignInBytes); - // Add location. bool addToAccelTable = false; @@ -775,13 +771,7 @@ void DwarfCompileUnit::applyVariableAttributes(const DbgVariable &Var, StringRef Name = Var.getName(); if (!Name.empty()) addString(VariableDie, dwarf::DW_AT_name, Name); - const auto *DIVar = Var.getVariable(); - if (DIVar) - if (DIAlignment AlignInBytes = DIVar->getAlignInBytes()) - addUInt(VariableDie, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata, - AlignInBytes); - - addSourceLine(VariableDie, DIVar); + addSourceLine(VariableDie, Var.getVariable()); addType(VariableDie, Var.getType()); if (Var.isArtificial()) addFlag(VariableDie, dwarf::DW_AT_artificial); diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp index d3b84de9eb5..bec554dcdf0 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp @@ -1007,11 +1007,6 @@ void DwarfUnit::constructTypeDIE(DIE &Buffer, const DICompositeType *CTy) { if (RLang) addUInt(Buffer, dwarf::DW_AT_APPLE_runtime_class, dwarf::DW_FORM_data1, RLang); - - // Add align info if available. - if (uint64_t AlignInBytes = CTy->getAlignInBytes()) - addUInt(Buffer, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata, - AlignInBytes); } } @@ -1399,7 +1394,6 @@ void DwarfUnit::constructMemberDIE(DIE &Buffer, const DIDerivedType *DT) { } else { uint64_t Size = DT->getSizeInBits(); uint64_t FieldSize = DD->getBaseTypeSize(DT); - uint64_t AlignInBytes = DT->getAlignInBytes(); uint64_t OffsetInBytes; bool IsBitfield = FieldSize && Size != FieldSize; @@ -1437,9 +1431,6 @@ void DwarfUnit::constructMemberDIE(DIE &Buffer, const DIDerivedType *DT) { } else { // This is not a bitfield. OffsetInBytes = DT->getOffsetInBits() / 8; - if (AlignInBytes) - addUInt(MemberDie, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata, - AlignInBytes); } if (DD->getDwarfVersion() <= 2) { @@ -1516,10 +1507,6 @@ DIE *DwarfUnit::getOrCreateStaticMemberDIE(const DIDerivedType *DT) { if (const ConstantFP *CFP = dyn_cast_or_null<ConstantFP>(DT->getConstant())) addConstantFPValue(StaticMemberDIE, CFP); - if (uint64_t AlignInBytes = DT->getAlignInBytes()) - addUInt(StaticMemberDIE, dwarf::DW_AT_alignment, dwarf::DW_FORM_udata, - AlignInBytes); - return &StaticMemberDIE; } diff --git a/llvm/lib/Support/Dwarf.cpp b/llvm/lib/Support/Dwarf.cpp index b0b2f0ad0eb..65050fde381 100644 --- a/llvm/lib/Support/Dwarf.cpp +++ b/llvm/lib/Support/Dwarf.cpp @@ -149,8 +149,6 @@ StringRef llvm::dwarf::AttributeString(unsigned Attribute) { case DW_AT_reference: return "DW_AT_reference"; case DW_AT_rvalue_reference: return "DW_AT_rvalue_reference"; case DW_AT_noreturn: return "DW_AT_noreturn"; - case DW_AT_alignment: - return "DW_AT_alignment"; case DW_AT_MIPS_loop_begin: return "DW_AT_MIPS_loop_begin"; case DW_AT_MIPS_tail_loop_begin: return "DW_AT_MIPS_tail_loop_begin"; case DW_AT_MIPS_epilog_begin: return "DW_AT_MIPS_epilog_begin"; diff --git a/llvm/test/DebugInfo/X86/align_c11.ll b/llvm/test/DebugInfo/X86/align_c11.ll deleted file mode 100644 index 0e9119de5b0..00000000000 --- a/llvm/test/DebugInfo/X86/align_c11.ll +++ /dev/null @@ -1,83 +0,0 @@ -; RUN: %llc_dwarf -filetype=obj < %s | llvm-dwarfdump -debug-dump=info - | FileCheck %s -; REQUIRES: object-emission - -; Generated by clang -c -g -std=c11 -S -emit-llvm from the following C11 source -; -; // every object of type struct data will be aligned to 128-byte boundary -; struct data { -; char x; -; _Alignas(128) char arr[2]; -; }; -; -; _Alignas(2048) struct data d; // this instance of data is aligned even stricter -; int foo(void) -; { -; struct data local_data; -; return 0; -; } - -; CHECK: DW_TAG_variable -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name{{.*}}"d" -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}2048 -; CHECK: DW_TAG_structure_type -; CHECK: DW_TAG_member -; CHECK: DW_TAG_member -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name{{.*}}"arr" -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}128 - -; ModuleID = 'test.c' -source_filename = "test.c" -target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" - -%struct.data = type { i8, [127 x i8], [2 x i8], [126 x i8] } - -@d = common global %struct.data zeroinitializer, align 2048, !dbg !0 - -; Function Attrs: nounwind uwtable -define i32 @foo() #0 !dbg !17 { -entry: - %local_data = alloca %struct.data, align 128 - call void @llvm.dbg.declare(metadata %struct.data* %local_data, metadata !21, metadata !22), !dbg !23 - ret i32 0, !dbg !24 -} - -; Function Attrs: nounwind readnone -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -attributes #0 = { nounwind uwtable } -attributes #1 = { nounwind readnone } - -!llvm.dbg.cu = !{!1} -!llvm.module.flags = !{!14, !15} -!llvm.ident = !{!16} - -!0 = distinct !DIGlobalVariable(name: "d", scope: !1, file: !5, line: 7, type: !6, isLocal: false, isDefinition: true, align: 16384) -!1 = distinct !DICompileUnit(language: DW_LANG_C99, file: !2, producer: "clang version 4.0.0 (http://llvm.org/git/clang.git 9ce5220b821054019059c2ac4a9b132c7723832d) (http://llvm.org/git/llvm.git 9a6298be89ce0359b151c0a37af2776a12c69e85)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !4) -!2 = !DIFile(filename: "test.c", directory: "/tmp") -!3 = !{} -!4 = !{!0} -!5 = !DIFile(filename: "test.c", directory: "/tmp") -!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "data", file: !5, line: 2, size: 2048, elements: !7) -!7 = !{!8, !10} -!8 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !6, file: !5, line: 3, baseType: !9, size: 8) -!9 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!10 = !DIDerivedType(tag: DW_TAG_member, name: "arr", scope: !6, file: !5, line: 4, baseType: !11, size: 16, align: 1024, offset: 1024) -!11 = !DICompositeType(tag: DW_TAG_array_type, baseType: !9, size: 16, elements: !12) -!12 = !{!13} -!13 = !DISubrange(count: 2) -!14 = !{i32 2, !"Dwarf Version", i32 4} -!15 = !{i32 2, !"Debug Info Version", i32 3} -!16 = !{!"clang version 4.0.0 (http://llvm.org/git/clang.git 9ce5220b821054019059c2ac4a9b132c7723832d) (http://llvm.org/git/llvm.git 9a6298be89ce0359b151c0a37af2776a12c69e85)"} -!17 = distinct !DISubprogram(name: "foo", scope: !5, file: !5, line: 8, type: !18, isLocal: false, isDefinition: true, scopeLine: 9, flags: DIFlagPrototyped, isOptimized: false, unit: !1, variables: !3) -!18 = !DISubroutineType(types: !19) -!19 = !{!20} -!20 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!21 = !DILocalVariable(name: "local_data", scope: !17, file: !5, line: 10, type: !6) -!22 = !DIExpression() -!23 = !DILocation(line: 10, column: 17, scope: !17) -!24 = !DILocation(line: 11, column: 5, scope: !17) diff --git a/llvm/test/DebugInfo/X86/align_cpp11.ll b/llvm/test/DebugInfo/X86/align_cpp11.ll deleted file mode 100644 index 796b6c73464..00000000000 --- a/llvm/test/DebugInfo/X86/align_cpp11.ll +++ /dev/null @@ -1,172 +0,0 @@ -; RUN: %llc_dwarf -filetype=obj < %s | llvm-dwarfdump -debug-dump=info - | FileCheck %s -; REQUIRES: object-emission - -; Generated by clang++ -c -g -std=c++11 -S -emit-llvm from the following C++11 source -; struct S { -; char x; -; alignas(128) char xx; -; }; -; -; class alignas(64) C0 { -; }; -; -; class C1 { -; alignas(64) static void *p; -; }; -; -; enum alignas(16) E { -; A, -; B, -; C, -; }; -; -; C0 c0; -; -; alignas(2048) S s; -; -; void foo() -; { -; S ss; -; E e; -; C1 c1; -; alignas(32) int i = 42; -; auto Lambda = [i](){}; -; } - -; CHECK: DW_TAG_class_type -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name{{.*}}"C0" -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}64 - -; CHECK: DW_TAG_variable -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name{{.*}}"s" -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}2048 - -; CHECK: DW_TAG_structure_type -; CHECK: DW_TAG_member -; CHECK: DW_AT_name{{.*}}"xx" -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}128 - -; CHECK: DW_TAG_enumeration_type -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}16 - -; CHECK: DW_TAG_variable -; CHECK: DW_AT_name{{.*}}"i" -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}32 -; CHECK: DW_TAG_class_type -; CHECK: DW_TAG_member -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name{{.*}}"i" -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}32 - -; CHECK: DW_TAG_class_type -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name{{.*}}"C1" -; CHECK: DW_TAG_member -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name{{.*}}"p" -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}64 - -; ModuleID = 'test.cpp' -source_filename = "test.cpp" -target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" - -%class.C0 = type { [64 x i8] } -%struct.S = type { i8, [127 x i8], i8, [127 x i8] } -%class.C1 = type { i8 } -%class.anon = type { i32 } - -@c0 = global %class.C0 zeroinitializer, align 64, !dbg !0 -@s = global %struct.S zeroinitializer, align 2048, !dbg !11 - -; Function Attrs: nounwind uwtable -define void @_Z3foov() #0 !dbg !22 { -entry: - %ss = alloca %struct.S, align 128 - %e = alloca i32, align 16 - %c1 = alloca %class.C1, align 1 - %i = alloca i32, align 32 - %Lambda = alloca %class.anon, align 4 - call void @llvm.dbg.declare(metadata %struct.S* %ss, metadata !25, metadata !26), !dbg !27 - call void @llvm.dbg.declare(metadata i32* %e, metadata !28, metadata !26), !dbg !29 - call void @llvm.dbg.declare(metadata %class.C1* %c1, metadata !30, metadata !26), !dbg !35 - call void @llvm.dbg.declare(metadata i32* %i, metadata !36, metadata !26), !dbg !38 - store i32 42, i32* %i, align 32, !dbg !38 - call void @llvm.dbg.declare(metadata %class.anon* %Lambda, metadata !39, metadata !26), !dbg !48 - %0 = getelementptr inbounds %class.anon, %class.anon* %Lambda, i32 0, i32 0, !dbg !49 - %1 = load i32, i32* %i, align 32, !dbg !50 - store i32 %1, i32* %0, align 4, !dbg !49 - ret void, !dbg !51 -} - -; Function Attrs: nounwind readnone -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -attributes #0 = { nounwind uwtable } -attributes #1 = { nounwind readnone } - -!llvm.dbg.cu = !{!1} -!llvm.module.flags = !{!19, !20} -!llvm.ident = !{!21} - -!0 = distinct !DIGlobalVariable(name: "c0", scope: !1, file: !5, line: 19, type: !17, isLocal: false, isDefinition: true) -!1 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !2, producer: "clang version 4.0.0 (http://llvm.org/git/clang.git 9ce5220b821054019059c2ac4a9b132c7723832d) (http://llvm.org/git/llvm.git 9a6298be89ce0359b151c0a37af2776a12c69e85)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, enums: !3, globals: !10) -!2 = !DIFile(filename: "test.cpp", directory: "/tmp") -!3 = !{!4} -!4 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "E", file: !5, line: 13, size: 32, align: 128, elements: !6, identifier: "_ZTS1E") -!5 = !DIFile(filename: "./test.cpp", directory: "/tmp") -!6 = !{!7, !8, !9} -!7 = !DIEnumerator(name: "A", value: 0) -!8 = !DIEnumerator(name: "B", value: 1) -!9 = !DIEnumerator(name: "C", value: 2) -!10 = !{!0, !11} -!11 = distinct !DIGlobalVariable(name: "s", scope: !1, file: !5, line: 21, type: !12, isLocal: false, isDefinition: true, align: 16384) -!12 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !5, line: 1, size: 2048, elements: !13, identifier: "_ZTS1S") -!13 = !{!14, !16} -!14 = !DIDerivedType(tag: DW_TAG_member, name: "x", scope: !12, file: !5, line: 2, baseType: !15, size: 8) -!15 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!16 = !DIDerivedType(tag: DW_TAG_member, name: "xx", scope: !12, file: !5, line: 3, baseType: !15, size: 8, align: 1024, offset: 1024) -!17 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "C0", file: !5, line: 6, size: 512, align: 512, elements: !18, identifier: "_ZTS2C0") -!18 = !{} -!19 = !{i32 2, !"Dwarf Version", i32 4} -!20 = !{i32 2, !"Debug Info Version", i32 3} -!21 = !{!"clang version 4.0.0 (http://llvm.org/git/clang.git 9ce5220b821054019059c2ac4a9b132c7723832d) (http://llvm.org/git/llvm.git 9a6298be89ce0359b151c0a37af2776a12c69e85)"} -!22 = distinct !DISubprogram(name: "foo", linkageName: "_Z3foov", scope: !5, file: !5, line: 23, type: !23, isLocal: false, isDefinition: true, scopeLine: 24, flags: DIFlagPrototyped, isOptimized: false, unit: !1, variables: !18) -!23 = !DISubroutineType(types: !24) -!24 = !{null} -!25 = !DILocalVariable(name: "ss", scope: !22, file: !5, line: 25, type: !12) -!26 = !DIExpression() -!27 = !DILocation(line: 25, column: 7, scope: !22) -!28 = !DILocalVariable(name: "e", scope: !22, file: !5, line: 26, type: !4) -!29 = !DILocation(line: 26, column: 7, scope: !22) -!30 = !DILocalVariable(name: "c1", scope: !22, file: !5, line: 27, type: !31) -!31 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "C1", file: !5, line: 9, size: 8, elements: !32, identifier: "_ZTS2C1") -!32 = !{!33} -!33 = !DIDerivedType(tag: DW_TAG_member, name: "p", scope: !31, file: !5, line: 10, baseType: !34, align: 512, flags: DIFlagStaticMember) -!34 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: null, size: 64) -!35 = !DILocation(line: 27, column: 8, scope: !22) -!36 = !DILocalVariable(name: "i", scope: !22, file: !5, line: 28, type: !37, align: 256) -!37 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!38 = !DILocation(line: 28, column: 21, scope: !22) -!39 = !DILocalVariable(name: "Lambda", scope: !22, file: !5, line: 29, type: !40) -!40 = distinct !DICompositeType(tag: DW_TAG_class_type, scope: !22, file: !5, line: 29, size: 32, elements: !41) -!41 = !{!42, !43} -!42 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !40, file: !5, line: 29, baseType: !37, size: 32, align: 256) -!43 = !DISubprogram(name: "operator()", scope: !40, file: !5, line: 29, type: !44, isLocal: false, isDefinition: false, scopeLine: 29, flags: DIFlagPublic | DIFlagPrototyped, isOptimized: false) -!44 = !DISubroutineType(types: !45) -!45 = !{null, !46} -!46 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !47, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer) -!47 = !DIDerivedType(tag: DW_TAG_const_type, baseType: !40) -!48 = !DILocation(line: 29, column: 10, scope: !22) -!49 = !DILocation(line: 29, column: 19, scope: !22) -!50 = !DILocation(line: 29, column: 20, scope: !22) -!51 = !DILocation(line: 30, column: 1, scope: !22) diff --git a/llvm/test/DebugInfo/X86/align_objc.ll b/llvm/test/DebugInfo/X86/align_objc.ll deleted file mode 100644 index c82d1a53555..00000000000 --- a/llvm/test/DebugInfo/X86/align_objc.ll +++ /dev/null @@ -1,98 +0,0 @@ -; RUN: %llc_dwarf -filetype=obj < %s | llvm-dwarfdump -debug-dump=info - | FileCheck %s -; REQUIRES: object-emission - -; typedef struct __attribute__((aligned (128))) { -; char c; -; } S0; -; -; typedef struct { -; __attribute__((aligned (64))) char c; -; } S1; -; -; S0 s0; -; -; void f() { -; S1 s1; -; __attribute__((aligned (32))) int i; -; } - -; CHECK: DW_TAG_typedef -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name{{.*}}"S0" -; CHECK: DW_TAG_structure_type -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}128 - -; CHECK: DW_TAG_variable -; CHECK: DW_AT_name{{.*}}"i" -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}32 - -; CHECK: DW_TAG_typedef -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name{{.*}}"S1" -; CHECK: DW_TAG_structure_type -; CHECK: DW_TAG_member -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name{{.*}}"c" -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_alignment{{.*}}64 - -; ModuleID = 'test.m' -source_filename = "test.m" -target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-unknown-linux-gnu" - -%struct.S0 = type { i8, [127 x i8] } -%struct.S1 = type { i8, [63 x i8] } - -@s0 = common global %struct.S0 zeroinitializer, align 128, !dbg !0 - -; Function Attrs: nounwind uwtable -define void @f() #0 !dbg !14 { -entry: - %s1 = alloca %struct.S1, align 64 - %i = alloca i32, align 32 - call void @llvm.dbg.declare(metadata %struct.S1* %s1, metadata !17, metadata !22), !dbg !23 - call void @llvm.dbg.declare(metadata i32* %i, metadata !24, metadata !22), !dbg !26 - ret void, !dbg !27 -} - -; Function Attrs: nounwind readnone -declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 - -attributes #0 = { nounwind uwtable } -attributes #1 = { nounwind readnone } - -!llvm.dbg.cu = !{!1} -!llvm.module.flags = !{!11, !12} -!llvm.ident = !{!13} - -!0 = distinct !DIGlobalVariable(name: "s0", scope: !1, file: !5, line: 10, type: !6, isLocal: false, isDefinition: true) -!1 = distinct !DICompileUnit(language: DW_LANG_ObjC, file: !2, producer: "clang version 4.0.0 (http://llvm.org/git/clang.git 9ce5220b821054019059c2ac4a9b132c7723832d) (http://llvm.org/git/llvm.git 9a6298be89ce0359b151c0a37af2776a12c69e85)", isOptimized: false, runtimeVersion: 1, emissionKind: FullDebug, enums: !3, globals: !4) -!2 = !DIFile(filename: "test.m", directory: "/tmp") -!3 = !{} -!4 = !{!0} -!5 = !DIFile(filename: "test.m", directory: "/tmp") -!6 = !DIDerivedType(tag: DW_TAG_typedef, name: "S0", file: !5, line: 3, baseType: !7) -!7 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !5, line: 1, size: 1024, align: 1024, elements: !8) -!8 = !{!9} -!9 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !7, file: !5, line: 2, baseType: !10, size: 8) -!10 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) -!11 = !{i32 2, !"Dwarf Version", i32 4} -!12 = !{i32 2, !"Debug Info Version", i32 3} -!13 = !{!"clang version 4.0.0 (http://llvm.org/git/clang.git 9ce5220b821054019059c2ac4a9b132c7723832d) (http://llvm.org/git/llvm.git 9a6298be89ce0359b151c0a37af2776a12c69e85)"} -!14 = distinct !DISubprogram(name: "f", scope: !5, file: !5, line: 12, type: !15, isLocal: false, isDefinition: true, scopeLine: 12, isOptimized: false, unit: !1, variables: !3) -!15 = !DISubroutineType(types: !16) -!16 = !{null} -!17 = !DILocalVariable(name: "s1", scope: !14, file: !5, line: 13, type: !18) -!18 = !DIDerivedType(tag: DW_TAG_typedef, name: "S1", file: !5, line: 8, baseType: !19) -!19 = distinct !DICompositeType(tag: DW_TAG_structure_type, file: !5, line: 6, size: 512, elements: !20) -!20 = !{!21} -!21 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !19, file: !5, line: 7, baseType: !10, size: 8, align: 512) -!22 = !DIExpression() -!23 = !DILocation(line: 13, column: 6, scope: !14) -!24 = !DILocalVariable(name: "i", scope: !14, file: !5, line: 14, type: !25, align: 256) -!25 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!26 = !DILocation(line: 14, column: 37, scope: !14) -!27 = !DILocation(line: 15, column: 1, scope: !14) diff --git a/llvm/test/DebugInfo/X86/dwarf-public-names.ll b/llvm/test/DebugInfo/X86/dwarf-public-names.ll index c28f793774a..70fdb5b758c 100644 --- a/llvm/test/DebugInfo/X86/dwarf-public-names.ll +++ b/llvm/test/DebugInfo/X86/dwarf-public-names.ll @@ -102,11 +102,11 @@ attributes #1 = { nounwind readnone } !4 = !DIFile(filename: "dwarf-public-names.cpp", directory: "/usr2/kparzysz/s.hex/t") !5 = !DISubroutineType(types: !6) !6 = !{null, !7} -!7 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, flags: DIFlagArtificial | DIFlagObjectPointer, baseType: !8) -!8 = !DICompositeType(tag: DW_TAG_structure_type, name: "C", line: 1, size: 8, file: !37, elements: !9) +!7 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial | DIFlagObjectPointer, baseType: !8) +!8 = !DICompositeType(tag: DW_TAG_structure_type, name: "C", line: 1, size: 8, align: 8, file: !37, elements: !9) !9 = !{!10, !12, !14} !10 = !DIDerivedType(tag: DW_TAG_member, name: "static_member_variable", line: 4, flags: DIFlagStaticMember, file: !37, scope: !8, baseType: !11) -!11 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, encoding: DW_ATE_signed) +!11 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) !12 = !DISubprogram(name: "member_function", linkageName: "_ZN1C15member_functionEv", line: 2, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 2, file: !4, scope: !8, type: !5, variables: !13) !13 = !{} ; previously: invalid DW_TAG_base_type !14 = !DISubprogram(name: "static_member_function", linkageName: "_ZN1C22static_member_functionEv", line: 3, isLocal: false, isDefinition: false, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, scopeLine: 3, file: !4, scope: !8, type: !15, variables: !17) @@ -124,7 +124,7 @@ attributes #1 = { nounwind readnone } !26 = !DIGlobalVariable(name: "global_variable", line: 17, isLocal: false, isDefinition: true, scope: null, file: !4, type: !8) !27 = !DIGlobalVariable(name: "global_namespace_variable", linkageName: "_ZN2ns25global_namespace_variableE", line: 27, isLocal: false, isDefinition: true, scope: !21, file: !4, type: !11) !28 = !DILocalVariable(name: "this", line: 9, arg: 1, flags: DIFlagArtificial | DIFlagObjectPointer, scope: !3, file: !4, type: !29) -!29 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, baseType: !8) +!29 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 64, align: 64, baseType: !8) !30 = !DILocation(line: 9, scope: !3) !31 = !DILocation(line: 10, scope: !3) !32 = !DILocation(line: 11, scope: !3) |