diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1194,27 +1194,6 @@ // address table (.debug_addr) header. AddrPool.setLabel(Asm->createTempSymbol("addr_table_base")); DebugLocs.setSym(Asm->createTempSymbol("loclists_table_base")); - - for (DICompileUnit *CUNode : M->debug_compile_units()) { - if (CUNode->getImportedEntities().empty() && - CUNode->getEnumTypes().empty() && CUNode->getRetainedTypes().empty() && - CUNode->getGlobalVariables().empty() && CUNode->getMacros().empty()) - continue; - - DwarfCompileUnit &CU = getOrCreateDwarfCompileUnit(CUNode); - - for (auto *Ty : CUNode->getEnumTypes()) { - assert(!isa_and_nonnull(Ty->getScope()) && - "Unexpected function-local entity in 'enums' CU field."); - CU.getOrCreateTypeDIE(cast(Ty)); - } - - for (auto *Ty : CUNode->getRetainedTypes()) { - if (DIType *RT = dyn_cast(Ty)) - // There is no point in force-emitting a forward declaration. - CU.getOrCreateTypeDIE(RT); - } - } } void DwarfDebug::finishEntityDefinitions() { @@ -1435,6 +1414,16 @@ CU->getOrCreateGlobalVariableDIE(GV, sortGlobalExprs(GVMap[GV])); } + // Emit types. + for (auto *Ty : CUNode->getEnumTypes()) + CU->getOrCreateTypeDIE(cast(Ty)); + + for (auto *Ty : CUNode->getRetainedTypes()) { + if (DIType *RT = dyn_cast(Ty)) + // There is no point in force-emitting a forward declaration. + CU->getOrCreateTypeDIE(RT); + } + // Emit imported entities. for (auto *IE : CUNode->getImportedEntities()) { assert(!isa_and_nonnull(IE->getScope()) && diff --git a/llvm/test/CodeGen/AMDGPU/dwarf-multi-register-use-crash.ll b/llvm/test/CodeGen/AMDGPU/dwarf-multi-register-use-crash.ll --- a/llvm/test/CodeGen/AMDGPU/dwarf-multi-register-use-crash.ll +++ b/llvm/test/CodeGen/AMDGPU/dwarf-multi-register-use-crash.ll @@ -11,6 +11,7 @@ define weak_odr void @test(i32 %0) !dbg !34 { ; CHECK-LABEL: test: ; CHECK: .Lfunc_begin0: +; CHECK-NEXT: .file 1 "dummy" "dummy" md5 0xb67bec84bdce3730b4a6f2ed8d50b85c ; CHECK-NEXT: .loc 1 288 0 ; dummy:288:0 ; CHECK-NEXT: .cfi_sections .debug_frame ; CHECK-NEXT: .cfi_startproc diff --git a/llvm/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll b/llvm/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll --- a/llvm/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll +++ b/llvm/test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll @@ -25,11 +25,6 @@ ; int (*y)(int) = &func; ; The DISubprogram should show up in compile unit a. -; CHECK: DW_TAG_compile_unit -; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name ("b.cpp") -; CHECK-NOT: DW_TAG_subprogram - ; CHECK: DW_TAG_compile_unit ; CHECK-NOT: DW_TAG ; CHECK: DW_AT_name ("a.cpp") @@ -37,6 +32,11 @@ ; CHECK-NOT: DW_TAG ; CHECK: DW_AT_name ("func") +; CHECK: DW_TAG_compile_unit +; CHECK-NOT: DW_TAG +; CHECK: DW_AT_name ("b.cpp") +; CHECK-NOT: DW_TAG_subprogram + source_filename = "test/DebugInfo/Generic/cross-cu-linkonce-distinct.ll" target triple = "x86_64-unknown-linux-gnu" diff --git a/llvm/test/DebugInfo/Generic/debug-info-qualifiers.ll b/llvm/test/DebugInfo/Generic/debug-info-qualifiers.ll --- a/llvm/test/DebugInfo/Generic/debug-info-qualifiers.ll +++ b/llvm/test/DebugInfo/Generic/debug-info-qualifiers.ll @@ -18,6 +18,10 @@ ; CHECK-NEXT: DW_AT_reference DW_FORM_flag_present ; CHECK: DW_TAG_subroutine_type DW_CHILDREN_yes ; CHECK-NEXT: DW_AT_rvalue_reference DW_FORM_flag_present + +; CHECK: DW_TAG_subprogram +; CHECK-NOT: DW_TAG_subprogram +; CHECK: DW_AT_name {{.*}} "g") ; ; CHECK: DW_TAG_subprogram ; CHECK-NOT: DW_TAG_subprogram diff --git a/llvm/test/DebugInfo/Generic/enum-types.ll b/llvm/test/DebugInfo/Generic/enum-types.ll --- a/llvm/test/DebugInfo/Generic/enum-types.ll +++ b/llvm/test/DebugInfo/Generic/enum-types.ll @@ -6,12 +6,12 @@ ; rdar://17628609 ; CHECK: DW_TAG_compile_unit -; CHECK: 0x[[ENUM:.*]]: DW_TAG_enumeration_type -; CHECK-NEXT: DW_AT_name {{.*}}"EA" ; CHECK: DW_TAG_subprogram ; CHECK: DW_AT_MIPS_linkage_name {{.*}}"_Z4topA2EA" ; CHECK: DW_TAG_formal_parameter -; CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x{{.*}} => {0x[[ENUM]]} +; CHECK: DW_AT_type [DW_FORM_ref4] (cu + 0x{{.*}} => {0x[[ENUM:.*]]} +; CHECK: 0x[[ENUM]]: DW_TAG_enumeration_type +; CHECK-NEXT: DW_AT_name {{.*}}"EA" ; CHECK: DW_TAG_compile_unit ; CHECK: DW_TAG_subprogram diff --git a/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc.ll b/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc.ll --- a/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc.ll +++ b/llvm/test/DebugInfo/Generic/incorrect-variable-debugloc.ll @@ -34,6 +34,9 @@ ; b.m_fn2(); ; } +; CHECK: DW_TAG_structure_type +; CHECK-NEXT: DW_AT_name ("B") + ; CHECK: DW_TAG_structure_type ; CHECK-NEXT: DW_AT_name ("C") ; CHECK: [[M_FN3_DECL:.*]]: DW_TAG_subprogram diff --git a/llvm/test/DebugInfo/Generic/local-type-as-template-parameter.ll b/llvm/test/DebugInfo/Generic/local-type-as-template-parameter.ll --- a/llvm/test/DebugInfo/Generic/local-type-as-template-parameter.ll +++ b/llvm/test/DebugInfo/Generic/local-type-as-template-parameter.ll @@ -27,17 +27,17 @@ ; Concrete out-of-line tree of foo(). ; CHECK: DW_TAG_subprogram ; CHECK: DW_AT_abstract_origin {{.*}} "_Z3foov" +; +; CHECK: DW_TAG_variable +; CHECK: DW_AT_abstract_origin {{.*}} "objB" +; CHECK: DW_TAG_variable +; CHECK: DW_AT_abstract_origin {{.*}} "objA" ; FIXME: 'struct B' should be in the abstract tree below, not here. ; CHECK: DW_TAG_structure_type ; CHECK: DW_AT_name ("B") ; CHECK: DW_TAG_member ; CHECK: NULL -; -; CHECK: DW_TAG_variable -; CHECK: DW_AT_abstract_origin {{.*}} "objB" -; CHECK: DW_TAG_variable -; CHECK: DW_AT_abstract_origin {{.*}} "objA" ; CHECK: NULL diff --git a/llvm/test/DebugInfo/Generic/namespace.ll b/llvm/test/DebugInfo/Generic/namespace.ll --- a/llvm/test/DebugInfo/Generic/namespace.ll +++ b/llvm/test/DebugInfo/Generic/namespace.ll @@ -13,12 +13,6 @@ ; CHECK-NOT: DW_AT_decl_file ; CHECK-NOT: DW_AT_decl_line -; CHECK: [[FOO:0x[0-9a-f]*]]:{{ *}}DW_TAG_structure_type -; CHECK: DW_AT_name ("foo") -; CHECK: DW_AT_declaration -; CHECK: [[BAR:0x[0-9a-f]*]]:{{ *}}DW_TAG_structure_type -; CHECK: DW_AT_name ("bar") - ; CHECK: DW_TAG_subprogram ; CHECK: DW_AT_MIPS_linkage_name ; CHECK: DW_AT_name ("f1") @@ -37,6 +31,12 @@ ; CHECK: [[VAR_FWD:0x[0-9a-f]*]]:{{ *}}DW_TAG_variable ; CHECK: DW_AT_name ("var_fwd") +; CHECK: [[FOO:0x[0-9a-f]*]]:{{ *}}DW_TAG_structure_type +; CHECK: DW_AT_name ("foo") +; CHECK: DW_AT_declaration +; CHECK: [[BAR:0x[0-9a-f]*]]:{{ *}}DW_TAG_structure_type +; CHECK: DW_AT_name ("bar") + ; CHECK: [[BAZ:0x[0-9a-f]*]]:{{.*}}DW_TAG_typedef ; CHECK: DW_AT_name ("baz") diff --git a/llvm/test/DebugInfo/Generic/varargs.ll b/llvm/test/DebugInfo/Generic/varargs.ll --- a/llvm/test/DebugInfo/Generic/varargs.ll +++ b/llvm/test/DebugInfo/Generic/varargs.ll @@ -12,23 +12,23 @@ ; ; CHECK: DW_TAG_subprogram ; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name ("a") +; CHECK: DW_AT_name ("b") ; CHECK-NOT: DW_TAG ; CHECK: DW_TAG_formal_parameter ; CHECK-NOT: DW_TAG -; CHECK: DW_TAG_formal_parameter +; CHECK: DW_TAG_variable +; CHECK-NOT: DW_TAG +; CHECK: DW_TAG_variable ; CHECK-NOT: DW_TAG ; CHECK: DW_TAG_unspecified_parameters ; ; CHECK: DW_TAG_subprogram ; CHECK-NOT: DW_TAG -; CHECK: DW_AT_name ("b") +; CHECK: DW_AT_name ("a") ; CHECK-NOT: DW_TAG ; CHECK: DW_TAG_formal_parameter ; CHECK-NOT: DW_TAG -; CHECK: DW_TAG_variable -; CHECK-NOT: DW_TAG -; CHECK: DW_TAG_variable +; CHECK: DW_TAG_formal_parameter ; CHECK-NOT: DW_TAG ; CHECK: DW_TAG_unspecified_parameters ; diff --git a/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir b/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir --- a/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir +++ b/llvm/test/DebugInfo/MIR/AArch64/implicit-def-dead-scope.mir @@ -5,7 +5,7 @@ # encountering an IMPLICIT_DEF in its own lexical scope. # CHECK: .debug_info contents: -# CHECK: DW_TAG_formal_parameter [14] +# CHECK: DW_TAG_formal_parameter [13] # CHECK-NEXT: DW_AT_const_value [DW_FORM_udata] (0) # CHECK-NEXT: DW_AT_abstract_origin {{.*}} "name" --- | diff --git a/llvm/test/DebugInfo/NVPTX/debug-loc-offset.ll b/llvm/test/DebugInfo/NVPTX/debug-loc-offset.ll --- a/llvm/test/DebugInfo/NVPTX/debug-loc-offset.ll +++ b/llvm/test/DebugInfo/NVPTX/debug-loc-offset.ll @@ -154,15 +154,6 @@ ; CHECK-NEXT: .b8 0 // EOM(1) ; CHECK-NEXT: .b8 0 // EOM(2) ; CHECK-NEXT: .b8 2 // Abbreviation Code -; CHECK-NEXT: .b8 19 // DW_TAG_structure_type -; CHECK-NEXT: .b8 0 // DW_CHILDREN_no -; CHECK-NEXT: .b8 3 // DW_AT_name -; CHECK-NEXT: .b8 8 // DW_FORM_string -; CHECK-NEXT: .b8 60 // DW_AT_declaration -; CHECK-NEXT: .b8 12 // DW_FORM_flag -; CHECK-NEXT: .b8 0 // EOM(1) -; CHECK-NEXT: .b8 0 // EOM(2) -; CHECK-NEXT: .b8 3 // Abbreviation Code ; CHECK-NEXT: .b8 46 // DW_TAG_subprogram ; CHECK-NEXT: .b8 1 // DW_CHILDREN_yes ; CHECK-NEXT: .b8 17 // DW_AT_low_pc @@ -180,11 +171,13 @@ ; CHECK-NEXT: .b8 11 // DW_FORM_data1 ; CHECK-NEXT: .b8 59 // DW_AT_decl_line ; CHECK-NEXT: .b8 11 // DW_FORM_data1 +; CHECK-NEXT: .b8 73 // DW_AT_type +; CHECK-NEXT: .b8 19 // DW_FORM_ref4 ; CHECK-NEXT: .b8 63 // DW_AT_external ; CHECK-NEXT: .b8 12 // DW_FORM_flag ; CHECK-NEXT: .b8 0 // EOM(1) ; CHECK-NEXT: .b8 0 // EOM(2) -; CHECK-NEXT: .b8 4 // Abbreviation Code +; CHECK-NEXT: .b8 3 // Abbreviation Code ; CHECK-NEXT: .b8 5 // DW_TAG_formal_parameter ; CHECK-NEXT: .b8 0 // DW_CHILDREN_no ; CHECK-NEXT: .b8 3 // DW_AT_name @@ -197,20 +190,18 @@ ; CHECK-NEXT: .b8 19 // DW_FORM_ref4 ; CHECK-NEXT: .b8 0 // EOM(1) ; CHECK-NEXT: .b8 0 // EOM(2) -; CHECK-NEXT: .b8 5 // Abbreviation Code -; CHECK-NEXT: .b8 52 // DW_TAG_variable +; CHECK-NEXT: .b8 4 // Abbreviation Code +; CHECK-NEXT: .b8 36 // DW_TAG_base_type ; CHECK-NEXT: .b8 0 // DW_CHILDREN_no ; CHECK-NEXT: .b8 3 // DW_AT_name ; CHECK-NEXT: .b8 8 // DW_FORM_string -; CHECK-NEXT: .b8 58 // DW_AT_decl_file +; CHECK-NEXT: .b8 62 // DW_AT_encoding ; CHECK-NEXT: .b8 11 // DW_FORM_data1 -; CHECK-NEXT: .b8 59 // DW_AT_decl_line +; CHECK-NEXT: .b8 11 // DW_AT_byte_size ; CHECK-NEXT: .b8 11 // DW_FORM_data1 -; CHECK-NEXT: .b8 73 // DW_AT_type -; CHECK-NEXT: .b8 16 // DW_FORM_ref_addr ; CHECK-NEXT: .b8 0 // EOM(1) ; CHECK-NEXT: .b8 0 // EOM(2) -; CHECK-NEXT: .b8 6 // Abbreviation Code +; CHECK-NEXT: .b8 5 // Abbreviation Code ; CHECK-NEXT: .b8 46 // DW_TAG_subprogram ; CHECK-NEXT: .b8 1 // DW_CHILDREN_yes ; CHECK-NEXT: .b8 17 // DW_AT_low_pc @@ -228,33 +219,42 @@ ; CHECK-NEXT: .b8 11 // DW_FORM_data1 ; CHECK-NEXT: .b8 59 // DW_AT_decl_line ; CHECK-NEXT: .b8 11 // DW_FORM_data1 -; CHECK-NEXT: .b8 73 // DW_AT_type -; CHECK-NEXT: .b8 19 // DW_FORM_ref4 ; CHECK-NEXT: .b8 63 // DW_AT_external ; CHECK-NEXT: .b8 12 // DW_FORM_flag ; CHECK-NEXT: .b8 0 // EOM(1) ; CHECK-NEXT: .b8 0 // EOM(2) -; CHECK-NEXT: .b8 7 // Abbreviation Code -; CHECK-NEXT: .b8 36 // DW_TAG_base_type +; CHECK-NEXT: .b8 6 // Abbreviation Code +; CHECK-NEXT: .b8 52 // DW_TAG_variable ; CHECK-NEXT: .b8 0 // DW_CHILDREN_no ; CHECK-NEXT: .b8 3 // DW_AT_name ; CHECK-NEXT: .b8 8 // DW_FORM_string -; CHECK-NEXT: .b8 62 // DW_AT_encoding +; CHECK-NEXT: .b8 58 // DW_AT_decl_file ; CHECK-NEXT: .b8 11 // DW_FORM_data1 -; CHECK-NEXT: .b8 11 // DW_AT_byte_size +; CHECK-NEXT: .b8 59 // DW_AT_decl_line ; CHECK-NEXT: .b8 11 // DW_FORM_data1 +; CHECK-NEXT: .b8 73 // DW_AT_type +; CHECK-NEXT: .b8 16 // DW_FORM_ref_addr +; CHECK-NEXT: .b8 0 // EOM(1) +; CHECK-NEXT: .b8 0 // EOM(2) +; CHECK-NEXT: .b8 7 // Abbreviation Code +; CHECK-NEXT: .b8 19 // DW_TAG_structure_type +; CHECK-NEXT: .b8 0 // DW_CHILDREN_no +; CHECK-NEXT: .b8 3 // DW_AT_name +; CHECK-NEXT: .b8 8 // DW_FORM_string +; CHECK-NEXT: .b8 60 // DW_AT_declaration +; CHECK-NEXT: .b8 12 // DW_FORM_flag ; CHECK-NEXT: .b8 0 // EOM(1) ; CHECK-NEXT: .b8 0 // EOM(2) ; CHECK-NEXT: .b8 0 // EOM(3) ; CHECK-NEXT: } ; CHECK-NEXT: .section .debug_info ; CHECK-NEXT: { -; CHECK-NEXT: .b32 159 // Length of Unit +; CHECK-NEXT: .b32 152 // Length of Unit ; CHECK-NEXT: .b8 2 // DWARF version number ; CHECK-NEXT: .b8 0 ; CHECK-NEXT: .b32 .debug_abbrev // Offset Into Abbrev. Section ; CHECK-NEXT: .b8 8 // Address Size (in bytes) -; CHECK-NEXT: .b8 1 // Abbrev [1] 0xb:0x98 DW_TAG_compile_unit +; CHECK-NEXT: .b8 1 // Abbrev [1] 0xb:0x91 DW_TAG_compile_unit ; CHECK-NEXT: .b8 99 // DW_AT_producer ; CHECK-NEXT: .b8 108 ; CHECK-NEXT: .b8 97 @@ -302,7 +302,7 @@ ; CHECK-NEXT: .b8 115 ; CHECK-NEXT: .b8 101 ; CHECK-NEXT: .b8 116 -; CHECK-NEXT: .b8 50 +; CHECK-NEXT: .b8 49 ; CHECK-NEXT: .b8 46 ; CHECK-NEXT: .b8 99 ; CHECK-NEXT: .b8 99 @@ -324,15 +324,11 @@ ; CHECK-NEXT: .b8 99 ; CHECK-NEXT: .b8 99 ; CHECK-NEXT: .b8 0 -; CHECK-NEXT: .b64 $L__func_begin1 // DW_AT_low_pc -; CHECK-NEXT: .b64 $L__func_end1 // DW_AT_high_pc -; CHECK-NEXT: .b8 2 // Abbrev [2] 0x64:0x4 DW_TAG_structure_type -; CHECK-NEXT: .b8 65 // DW_AT_name -; CHECK-NEXT: .b8 0 -; CHECK-NEXT: .b8 1 // DW_AT_declaration -; CHECK-NEXT: .b8 3 // Abbrev [3] 0x68:0x3a DW_TAG_subprogram -; CHECK-NEXT: .b64 $L__func_begin1 // DW_AT_low_pc -; CHECK-NEXT: .b64 $L__func_end1 // DW_AT_high_pc +; CHECK-NEXT: .b64 $L__func_begin0 // DW_AT_low_pc +; CHECK-NEXT: .b64 $L__func_end0 // DW_AT_high_pc +; CHECK-NEXT: .b8 2 // Abbrev [2] 0x64:0x30 DW_TAG_subprogram +; CHECK-NEXT: .b64 $L__func_begin0 // DW_AT_low_pc +; CHECK-NEXT: .b64 $L__func_end0 // DW_AT_high_pc ; CHECK-NEXT: .b8 1 // DW_AT_frame_base ; CHECK-NEXT: .b8 156 ; CHECK-NEXT: .b8 95 // DW_AT_MIPS_linkage_name @@ -340,37 +336,38 @@ ; CHECK-NEXT: .b8 51 ; CHECK-NEXT: .b8 98 ; CHECK-NEXT: .b8 97 -; CHECK-NEXT: .b8 122 -; CHECK-NEXT: .b8 49 -; CHECK-NEXT: .b8 65 +; CHECK-NEXT: .b8 114 +; CHECK-NEXT: .b8 105 ; CHECK-NEXT: .b8 0 ; CHECK-NEXT: .b8 98 // DW_AT_name ; CHECK-NEXT: .b8 97 -; CHECK-NEXT: .b8 122 +; CHECK-NEXT: .b8 114 ; CHECK-NEXT: .b8 0 -; CHECK-NEXT: .b8 2 // DW_AT_decl_file -; CHECK-NEXT: .b8 6 // DW_AT_decl_line +; CHECK-NEXT: .b8 1 // DW_AT_decl_file +; CHECK-NEXT: .b8 1 // DW_AT_decl_line +; CHECK-NEXT: .b32 148 // DW_AT_type ; CHECK-NEXT: .b8 1 // DW_AT_external -; CHECK-NEXT: .b8 4 // Abbrev [4] 0x8b:0x9 DW_TAG_formal_parameter -; CHECK-NEXT: .b8 97 // DW_AT_name -; CHECK-NEXT: .b8 0 -; CHECK-NEXT: .b8 2 // DW_AT_decl_file -; CHECK-NEXT: .b8 6 // DW_AT_decl_line -; CHECK-NEXT: .b32 100 // DW_AT_type -; CHECK-NEXT: .b8 5 // Abbrev [5] 0x94:0xd DW_TAG_variable -; CHECK-NEXT: .b8 122 // DW_AT_name +; CHECK-NEXT: .b8 3 // Abbrev [3] 0x8a:0x9 DW_TAG_formal_parameter +; CHECK-NEXT: .b8 98 // DW_AT_name ; CHECK-NEXT: .b8 0 -; CHECK-NEXT: .b8 2 // DW_AT_decl_file -; CHECK-NEXT: .b8 7 // DW_AT_decl_line -; CHECK-NEXT: .b64 .debug_info+311 // DW_AT_type +; CHECK-NEXT: .b8 1 // DW_AT_decl_file +; CHECK-NEXT: .b8 1 // DW_AT_decl_line +; CHECK-NEXT: .b32 148 // DW_AT_type ; CHECK-NEXT: .b8 0 // End Of Children Mark +; CHECK-NEXT: .b8 4 // Abbrev [4] 0x94:0x7 DW_TAG_base_type +; CHECK-NEXT: .b8 105 // DW_AT_name +; CHECK-NEXT: .b8 110 +; CHECK-NEXT: .b8 116 +; CHECK-NEXT: .b8 0 +; CHECK-NEXT: .b8 5 // DW_AT_encoding +; CHECK-NEXT: .b8 4 // DW_AT_byte_size ; CHECK-NEXT: .b8 0 // End Of Children Mark -; CHECK-NEXT: .b32 152 // Length of Unit +; CHECK-NEXT: .b32 159 // Length of Unit ; CHECK-NEXT: .b8 2 // DWARF version number ; CHECK-NEXT: .b8 0 ; CHECK-NEXT: .b32 .debug_abbrev // Offset Into Abbrev. Section ; CHECK-NEXT: .b8 8 // Address Size (in bytes) -; CHECK-NEXT: .b8 1 // Abbrev [1] 0xb:0x91 DW_TAG_compile_unit +; CHECK-NEXT: .b8 1 // Abbrev [1] 0xb:0x98 DW_TAG_compile_unit ; CHECK-NEXT: .b8 99 // DW_AT_producer ; CHECK-NEXT: .b8 108 ; CHECK-NEXT: .b8 97 @@ -418,7 +415,7 @@ ; CHECK-NEXT: .b8 115 ; CHECK-NEXT: .b8 101 ; CHECK-NEXT: .b8 116 -; CHECK-NEXT: .b8 49 +; CHECK-NEXT: .b8 50 ; CHECK-NEXT: .b8 46 ; CHECK-NEXT: .b8 99 ; CHECK-NEXT: .b8 99 @@ -440,11 +437,11 @@ ; CHECK-NEXT: .b8 99 ; CHECK-NEXT: .b8 99 ; CHECK-NEXT: .b8 0 -; CHECK-NEXT: .b64 $L__func_begin0 // DW_AT_low_pc -; CHECK-NEXT: .b64 $L__func_end0 // DW_AT_high_pc -; CHECK-NEXT: .b8 6 // Abbrev [6] 0x64:0x30 DW_TAG_subprogram -; CHECK-NEXT: .b64 $L__func_begin0 // DW_AT_low_pc -; CHECK-NEXT: .b64 $L__func_end0 // DW_AT_high_pc +; CHECK-NEXT: .b64 $L__func_begin1 // DW_AT_low_pc +; CHECK-NEXT: .b64 $L__func_end1 // DW_AT_high_pc +; CHECK-NEXT: .b8 5 // Abbrev [5] 0x64:0x3a DW_TAG_subprogram +; CHECK-NEXT: .b64 $L__func_begin1 // DW_AT_low_pc +; CHECK-NEXT: .b64 $L__func_end1 // DW_AT_high_pc ; CHECK-NEXT: .b8 1 // DW_AT_frame_base ; CHECK-NEXT: .b8 156 ; CHECK-NEXT: .b8 95 // DW_AT_MIPS_linkage_name @@ -452,31 +449,34 @@ ; CHECK-NEXT: .b8 51 ; CHECK-NEXT: .b8 98 ; CHECK-NEXT: .b8 97 -; CHECK-NEXT: .b8 114 -; CHECK-NEXT: .b8 105 +; CHECK-NEXT: .b8 122 +; CHECK-NEXT: .b8 49 +; CHECK-NEXT: .b8 65 ; CHECK-NEXT: .b8 0 ; CHECK-NEXT: .b8 98 // DW_AT_name ; CHECK-NEXT: .b8 97 -; CHECK-NEXT: .b8 114 +; CHECK-NEXT: .b8 122 ; CHECK-NEXT: .b8 0 -; CHECK-NEXT: .b8 1 // DW_AT_decl_file -; CHECK-NEXT: .b8 1 // DW_AT_decl_line -; CHECK-NEXT: .b32 148 // DW_AT_type +; CHECK-NEXT: .b8 2 // DW_AT_decl_file +; CHECK-NEXT: .b8 6 // DW_AT_decl_line ; CHECK-NEXT: .b8 1 // DW_AT_external -; CHECK-NEXT: .b8 4 // Abbrev [4] 0x8a:0x9 DW_TAG_formal_parameter -; CHECK-NEXT: .b8 98 // DW_AT_name +; CHECK-NEXT: .b8 3 // Abbrev [3] 0x87:0x9 DW_TAG_formal_parameter +; CHECK-NEXT: .b8 97 // DW_AT_name ; CHECK-NEXT: .b8 0 -; CHECK-NEXT: .b8 1 // DW_AT_decl_file -; CHECK-NEXT: .b8 1 // DW_AT_decl_line -; CHECK-NEXT: .b32 148 // DW_AT_type +; CHECK-NEXT: .b8 2 // DW_AT_decl_file +; CHECK-NEXT: .b8 6 // DW_AT_decl_line +; CHECK-NEXT: .b32 158 // DW_AT_type +; CHECK-NEXT: .b8 6 // Abbrev [6] 0x90:0xd DW_TAG_variable +; CHECK-NEXT: .b8 122 // DW_AT_name +; CHECK-NEXT: .b8 0 +; CHECK-NEXT: .b8 2 // DW_AT_decl_file +; CHECK-NEXT: .b8 7 // DW_AT_decl_line +; CHECK-NEXT: .b64 .debug_info+148 // DW_AT_type ; CHECK-NEXT: .b8 0 // End Of Children Mark -; CHECK-NEXT: .b8 7 // Abbrev [7] 0x94:0x7 DW_TAG_base_type -; CHECK-NEXT: .b8 105 // DW_AT_name -; CHECK-NEXT: .b8 110 -; CHECK-NEXT: .b8 116 +; CHECK-NEXT: .b8 7 // Abbrev [7] 0x9e:0x4 DW_TAG_structure_type +; CHECK-NEXT: .b8 65 // DW_AT_name ; CHECK-NEXT: .b8 0 -; CHECK-NEXT: .b8 5 // DW_AT_encoding -; CHECK-NEXT: .b8 4 // DW_AT_byte_size +; CHECK-NEXT: .b8 1 // DW_AT_declaration ; CHECK-NEXT: .b8 0 // End Of Children Mark ; CHECK-NEXT: } ; CHECK-NEXT: .section .debug_loc { } diff --git a/llvm/test/DebugInfo/X86/align_cpp11.ll b/llvm/test/DebugInfo/X86/align_cpp11.ll --- a/llvm/test/DebugInfo/X86/align_cpp11.ll +++ b/llvm/test/DebugInfo/X86/align_cpp11.ll @@ -33,12 +33,6 @@ ; auto Lambda = [i](){}; ; } -; CHECK: DW_TAG_enumeration_type -; CHECK: DW_AT_alignment{{.*}}16 -; CHECK: DW_TAG_enumerator -; CHECK: DW_TAG_enumerator -; CHECK: DW_TAG_enumerator - ; CHECK: DW_TAG_subprogram ; CHECK: DW_TAG_variable ; CHECK: DW_TAG_variable @@ -68,6 +62,12 @@ ; CHECK: DW_AT_name{{.*}}"xx" ; CHECK: DW_AT_alignment{{.*}}128 +; CHECK: DW_TAG_enumeration_type +; CHECK: DW_AT_alignment{{.*}}16 +; CHECK: DW_TAG_enumerator +; CHECK: DW_TAG_enumerator +; CHECK: DW_TAG_enumerator + ; CHECK: DW_TAG_class_type ; CHECK: DW_AT_name{{.*}}"C1" ; CHECK: DW_TAG_member diff --git a/llvm/test/DebugInfo/X86/debug-info-blocks.ll b/llvm/test/DebugInfo/X86/debug-info-blocks.ll --- a/llvm/test/DebugInfo/X86/debug-info-blocks.ll +++ b/llvm/test/DebugInfo/X86/debug-info-blocks.ll @@ -5,10 +5,6 @@ ; rdar://problem/9279956 ; test that the DW_AT_location of self is at ( fbreg +{{[0-9]+}}, deref, +{{[0-9]+}} ) -; CHECK: [[A:.*]]: DW_TAG_structure_type -; CHECK-NEXT: DW_AT_APPLE_objc_complete_type -; CHECK-NEXT: DW_AT_name{{.*}}"A" - ; CHECK: DW_TAG_subprogram ; CHECK: DW_TAG_subprogram ; CHECK: DW_TAG_subprogram @@ -35,6 +31,10 @@ ; CHECK-NOT: DW_TAG ; CHECK: DW_AT_artificial +; CHECK: [[A:.*]]: DW_TAG_structure_type +; CHECK-NEXT: DW_AT_APPLE_objc_complete_type +; CHECK-NEXT: DW_AT_name{{.*}}"A" + ; CHECK: [[APTR]]: DW_TAG_pointer_type ; CHECK-NEXT: {[[A]]} diff --git a/llvm/test/DebugInfo/X86/debug-loc-offset.mir b/llvm/test/DebugInfo/X86/debug-loc-offset.mir --- a/llvm/test/DebugInfo/X86/debug-loc-offset.mir +++ b/llvm/test/DebugInfo/X86/debug-loc-offset.mir @@ -32,38 +32,38 @@ # Checking that we have two compile units with two sets of high/lo_pc. # CHECK: .debug_info contents # CHECK: DW_TAG_compile_unit -# CHECK: DW_AT_low_pc {{.*}} (0x00000020 ".text") +# CHECK: DW_AT_low_pc {{.*}} (0x00000000 ".text") # CHECK: DW_AT_high_pc # # CHECK: DW_TAG_subprogram # CHECK-NOT: DW_TAG -# CHECK: DW_AT_linkage_name [DW_FORM_strp]{{.*}}"_Z3baz1A" +# CHECK: DW_AT_linkage_name [DW_FORM_strp]{{.*}}"_Z3bari" # CHECK-NOT: {{DW_TAG|NULL}} # CHECK: DW_TAG_formal_parameter # CHECK-NOT: DW_TAG # CHECK: DW_AT_location [DW_FORM_sec_offset] ({{.*}} -# CHECK-NEXT: [0x00000029, 0x00000037) ".text": DW_OP_breg0 EAX+0, DW_OP_deref -# CHECK-NEXT: [0x00000037, 0x00000063) ".text": DW_OP_breg5 EBP-8, DW_OP_deref, DW_OP_deref -# CHECK-NEXT: DW_AT_name [DW_FORM_strp]{{.*}}"a" -# -# CHECK: DW_TAG_variable -# CHECK: DW_AT_location [DW_FORM_exprloc] -# CHECK-NOT: DW_AT_location +# CHECK-NEXT: [0x00000000, 0x0000000a) ".text": DW_OP_consts +0, DW_OP_stack_value +# CHECK-NEXT: [0x0000000a, 0x00000017) ".text": DW_OP_consts +1, DW_OP_stack_value) +# CHECK-NEXT: DW_AT_name [DW_FORM_strp]{{.*}}"b" # # CHECK: DW_TAG_compile_unit -# CHECK: DW_AT_low_pc {{.*}} (0x00000000 ".text") +# CHECK: DW_AT_low_pc {{.*}} (0x00000020 ".text") # CHECK: DW_AT_high_pc # # CHECK: DW_TAG_subprogram # CHECK-NOT: DW_TAG -# CHECK: DW_AT_linkage_name [DW_FORM_strp]{{.*}}"_Z3bari" +# CHECK: DW_AT_linkage_name [DW_FORM_strp]{{.*}}"_Z3baz1A" # CHECK-NOT: {{DW_TAG|NULL}} # CHECK: DW_TAG_formal_parameter # CHECK-NOT: DW_TAG # CHECK: DW_AT_location [DW_FORM_sec_offset] ({{.*}} -# CHECK-NEXT: [0x00000000, 0x0000000a) ".text": DW_OP_consts +0, DW_OP_stack_value -# CHECK-NEXT: [0x0000000a, 0x00000017) ".text": DW_OP_consts +1, DW_OP_stack_value) -# CHECK-NEXT: DW_AT_name [DW_FORM_strp]{{.*}}"b" +# CHECK-NEXT: [0x00000029, 0x00000037) ".text": DW_OP_breg0 EAX+0, DW_OP_deref +# CHECK-NEXT: [0x00000037, 0x00000063) ".text": DW_OP_breg5 EBP-8, DW_OP_deref, DW_OP_deref +# CHECK-NEXT: DW_AT_name [DW_FORM_strp]{{.*}}"a" +# +# CHECK: DW_TAG_variable +# CHECK: DW_AT_location [DW_FORM_exprloc] +# CHECK-NOT: DW_AT_location # # CHECK: .debug_loc contents: # CHECK: 0x00000000: diff --git a/llvm/test/DebugInfo/X86/generate-odr-hash.ll b/llvm/test/DebugInfo/X86/generate-odr-hash.ll --- a/llvm/test/DebugInfo/X86/generate-odr-hash.ll +++ b/llvm/test/DebugInfo/X86/generate-odr-hash.ll @@ -54,6 +54,15 @@ ; FISSION-LABEL: .debug_info.dwo contents: ; CHECK: Compile Unit: length = [[CU_SIZE:[0-9a-f]+]] +; CHECK: DW_TAG_structure_type + +; Ensure the CU-local type 'walrus' is not placed in a type unit. +; CHECK: [[WALRUS:^0x........]]: DW_TAG_structure_type +; CHECK-NEXT: DW_AT_name{{.*}}"walrus" +; CHECK-NEXT: DW_AT_byte_size +; CHECK-NEXT: DW_AT_decl_file +; CHECK-NEXT: DW_AT_decl_line + ; CHECK: [[BAR:^0x........]]: DW_TAG_structure_type ; CHECK-NEXT: DW_AT_declaration ; CHECK-NEXT: DW_AT_signature {{.*}} (0x1d02f3be30cc5688) @@ -65,17 +74,6 @@ ; CHECK-NEXT: DW_AT_declaration ; CHECK-NEXT: DW_AT_signature {{.*}} (0xfd756cee88f8a118) -; CHECK: DW_TAG_structure_type - -; CHECK: DW_TAG_structure_type - -; Ensure the CU-local type 'walrus' is not placed in a type unit. -; CHECK: [[WALRUS:^0x........]]: DW_TAG_structure_type -; CHECK-NEXT: DW_AT_name{{.*}}"walrus" -; CHECK-NEXT: DW_AT_byte_size -; CHECK-NEXT: DW_AT_decl_file -; CHECK-NEXT: DW_AT_decl_line - ; SINGLE-LABEL: .debug_types contents: ; FISSION: .debug_types.dwo contents: @@ -125,10 +123,10 @@ ; CHECK-LABEL: .debug_line contents: ; CHECK: Line table prologue ; CHECK-NOT: file_names[ -; SINGLE: file_names[ -; SINGLE-NEXT: name: "bar.h" ; CHECK: file_names[ ; CHECK-NEXT: name: "bar.cpp" +; SINGLE: file_names[ +; SINGLE-NEXT: name: "bar.h" ; CHECK-NOT: file_names[ ; FISSION: .debug_line.dwo contents: diff --git a/llvm/test/DebugInfo/X86/gnu-public-names.ll b/llvm/test/DebugInfo/X86/gnu-public-names.ll --- a/llvm/test/DebugInfo/X86/gnu-public-names.ll +++ b/llvm/test/DebugInfo/X86/gnu-public-names.ll @@ -71,7 +71,7 @@ ; ASM-NEXT: .asciz "global_variable" # External Name ; ASM: .section .debug_gnu_pubtypes -; ASM: .long 109 # DIE offset +; ASM: .long 42 # DIE offset ; ASM: .byte 16 # Attributes: TYPE, EXTERNAL ; ASM-NEXT: .asciz "C" # External Name @@ -80,29 +80,6 @@ ; CHECK: DW_AT_GNU_pubnames (true) ; CHECK-NOT: DW_AT_GNU_pubtypes [ -; CHECK: DW_TAG_enumeration -; CHECK: [[UNNAMED_ENUM_ENUMERATOR:0x[0-9a-f]+]]: DW_TAG_enumerator -; CHECK: DW_AT_name ("unnamed_enum_enumerator") -; CHECK: NULL - -; CHECK: [[UNSIGNED_INT:0x[0-9a-f]+]]: DW_TAG_base_type -; CHECK: DW_AT_name ("unsigned int") - -; CHECK: [[NAMED_ENUM:0x[0-9a-f]+]]: DW_TAG_enumeration -; CHECK: DW_AT_name ("named_enum") -; CHECK: [[NAMED_ENUM_ENUMERATOR:0x[0-9a-f]+]]: DW_TAG_enumerator -; CHECK: DW_AT_name ("named_enum_enumerator") -; CHECK: NULL - -; CHECK: [[NAMED_ENUM_CLASS:0x[0-9a-f]+]]: DW_TAG_enumeration -; CHECK: DW_AT_name ("named_enum_class") -; CHECK: [[NAMED_ENUM_CLASS_ENUMERATOR:0x[0-9a-f]+]]: DW_TAG_enumerator -; CHECK: DW_AT_name ("named_enum_class_enumerator") -; CHECK: NULL - -; CHECK: [[INT:0x[0-9a-f]+]]: DW_TAG_base_type -; CHECK: DW_AT_name ("int") - ; CHECK: [[C:0x[0-9a-f]+]]: DW_TAG_structure_type ; CHECK: DW_AT_name ("C") ; CHECK: DW_TAG_member @@ -117,6 +94,9 @@ ; CHECK: DW_AT_name ("static_member_function") ; CHECK: NULL +; CHECK: [[INT:0x[0-9a-f]+]]: DW_TAG_base_type +; CHECK: DW_AT_name ("int") + ; CHECK: DW_TAG_pointer_type ; CHECK: [[MEM_FUNC:0x[0-9a-f]+]]: DW_TAG_subprogram @@ -190,6 +170,26 @@ ; CHECK: NULL ; CHECK: NULL +; CHECK: DW_TAG_enumeration +; CHECK: [[UNNAMED_ENUM_ENUMERATOR:0x[0-9a-f]+]]: DW_TAG_enumerator +; CHECK: DW_AT_name ("unnamed_enum_enumerator") +; CHECK: NULL + +; CHECK: [[UNSIGNED_INT:0x[0-9a-f]+]]: DW_TAG_base_type +; CHECK: DW_AT_name ("unsigned int") + +; CHECK: [[NAMED_ENUM:0x[0-9a-f]+]]: DW_TAG_enumeration +; CHECK: DW_AT_name ("named_enum") +; CHECK: [[NAMED_ENUM_ENUMERATOR:0x[0-9a-f]+]]: DW_TAG_enumerator +; CHECK: DW_AT_name ("named_enum_enumerator") +; CHECK: NULL + +; CHECK: [[NAMED_ENUM_CLASS:0x[0-9a-f]+]]: DW_TAG_enumeration +; CHECK: DW_AT_name ("named_enum_class") +; CHECK: [[NAMED_ENUM_CLASS_ENUMERATOR:0x[0-9a-f]+]]: DW_TAG_enumerator +; CHECK: DW_AT_name ("named_enum_class_enumerator") +; CHECK: NULL + ; CHECK: DW_TAG_imported_declaration ; CHECK: DW_TAG_pointer_type ; CHECK: DW_TAG_pointer_type @@ -203,16 +203,16 @@ ; CHECK-NEXT: [[MEM_FUNC]] EXTERNAL FUNCTION "C::member_function" ; CHECK-NEXT: [[OUTER]] EXTERNAL TYPE "outer" ; CHECK-NEXT: [[GLOB_NS_VAR]] EXTERNAL VARIABLE "ns::global_namespace_variable" -; CHECK-NEXT: [[NAMED_ENUM_CLASS_ENUMERATOR]] STATIC VARIABLE "named_enum_class_enumerator" +; CHECK-NEXT: [[GLOB_VAR]] EXTERNAL VARIABLE "global_variable" ; CHECK-NEXT: [[UNNAMED_ENUM_ENUMERATOR]] STATIC VARIABLE "unnamed_enum_enumerator" ; CHECK-NEXT: [[GLOBAL_F7]] EXTERNAL FUNCTION "f7" -; CHECK-NEXT: [[GLOB_VAR]] EXTERNAL VARIABLE "global_variable" ; CHECK-NEXT: [[OUTER_ANON]] EXTERNAL TYPE "outer::(anonymous namespace)" +; CHECK-NEXT: [[NAMED_ENUM_CLASS_ENUMERATOR]] STATIC VARIABLE "named_enum_class_enumerator" ; FIXME: GCC produces enumerators as EXTERNAL, not STATIC ; CHECK-NEXT: [[GLOBAL_FUNC]] EXTERNAL FUNCTION "global_function" ; CHECK-NEXT: [[GLOB_NS_FUNC]] EXTERNAL FUNCTION "ns::global_namespace_function" -; CHECK-NEXT: [[NAMED_ENUM_ENUMERATOR]] STATIC VARIABLE "named_enum_enumerator" ; CHECK-NEXT: [[NS]] EXTERNAL TYPE "ns" +; CHECK-NEXT: [[NAMED_ENUM_ENUMERATOR]] STATIC VARIABLE "named_enum_enumerator" ; CHECK-NEXT: [[ANON]] EXTERNAL TYPE "(anonymous namespace)" ; CHECK-NEXT: [[OUTER_ANON_C]] STATIC VARIABLE "outer::(anonymous namespace)::c" ; CHECK-NEXT: [[D_VAR]] EXTERNAL VARIABLE "ns::d" @@ -230,9 +230,9 @@ ; CHECK-LABEL: debug_gnu_pubtypes contents: ; CHECK: Offset Linkage Kind Name ; CHECK-NEXT: [[INT]] STATIC TYPE "int" +; CHECK-NEXT: [[C]] EXTERNAL TYPE "C" ; CHECK-NEXT: [[UNSIGNED_INT]] STATIC TYPE "unsigned int" ; CHECK-NEXT: [[NAMED_ENUM]] EXTERNAL TYPE "named_enum" -; CHECK-NEXT: [[C]] EXTERNAL TYPE "C" ; CHECK-NEXT: [[NAMED_ENUM_CLASS]] EXTERNAL TYPE "named_enum_class" ; CHECK-NEXT: [[D]] EXTERNAL TYPE "ns::D" diff --git a/llvm/test/DebugInfo/X86/ref_addr_relocation.ll b/llvm/test/DebugInfo/X86/ref_addr_relocation.ll --- a/llvm/test/DebugInfo/X86/ref_addr_relocation.ll +++ b/llvm/test/DebugInfo/X86/ref_addr_relocation.ll @@ -33,12 +33,12 @@ ; Make sure we use relocation for ref_addr on non-darwin platforms. ; CHECK: DW_TAG_compile_unit -; CHECK: DW_TAG_structure_type ; CHECK: DW_TAG_variable ; ELF-ASM: .long [[TYPE:.*]] # DW_AT_type ; DARWIN-ASM2: .long [[TYPE:.*]] ## DW_AT_type ; DARWIN-ASM4: .long [[TYPE:.*]] ## DW_AT_type ; COFF-ASM: .long [[TYPE:.*]] # DW_AT_type +; CHECK: DW_TAG_structure_type ; CHECK: cu_begin1 ; CHECK: DW_TAG_compile_unit ; CHECK-NOT: DW_TAG_structure_type @@ -60,9 +60,9 @@ ; CHECK-DWARF: DW_AT_type [DW_FORM_ref_addr] {{.*}}[[ADDR]] ; CHECK-DWARF2: DW_TAG_compile_unit -; CHECK-DWARF2: [[ADDR:.*]]: DW_TAG_structure_type ; CHECK-DWARF2: DW_TAG_variable -; CHECK-DWARF2: DW_AT_type [DW_FORM_ref4] {{.*}} => {[[ADDR]]} +; CHECK-DWARF2: DW_AT_type [DW_FORM_ref4] {{.*}} => {[[ADDR:.*]]} +; CHECK-DWARF2: [[ADDR]]: DW_TAG_structure_type source_filename = "test/DebugInfo/X86/ref_addr_relocation.ll" diff --git a/llvm/test/DebugInfo/X86/sret.ll b/llvm/test/DebugInfo/X86/sret.ll --- a/llvm/test/DebugInfo/X86/sret.ll +++ b/llvm/test/DebugInfo/X86/sret.ll @@ -3,8 +3,8 @@ ; Based on the debuginfo-tests/sret.cpp code. -; CHECK-DWO: DW_AT_GNU_dwo_id (0x7db1cc8453a47c44) -; CHECK-DWO: DW_AT_GNU_dwo_id (0x7db1cc8453a47c44) +; CHECK-DWO: DW_AT_GNU_dwo_id (0x1b2f2750df1fd599) +; CHECK-DWO: DW_AT_GNU_dwo_id (0x1b2f2750df1fd599) ; RUN: llc -O0 -fast-isel=true -mtriple=x86_64-apple-darwin -filetype=obj -o - %s | llvm-dwarfdump -debug-info - | FileCheck -check-prefixes=CHECK,FASTISEL %s ; RUN: llc -O0 -fast-isel=false -mtriple=x86_64-apple-darwin -filetype=obj -o - %s | llvm-dwarfdump -debug-info - | FileCheck -check-prefixes=CHECK,SDAG %s diff --git a/llvm/test/DebugInfo/X86/string-offsets-multiple-cus.ll b/llvm/test/DebugInfo/X86/string-offsets-multiple-cus.ll --- a/llvm/test/DebugInfo/X86/string-offsets-multiple-cus.ll +++ b/llvm/test/DebugInfo/X86/string-offsets-multiple-cus.ll @@ -42,21 +42,21 @@ ; TYPEUNITS-NOT: NULL ; TYPEUNITS: DW_TAG_enumerator ; TYPEUNITS-NOT: {{DW_TAG|NULL}} -; TYPEUNITS: DW_AT_name [DW_FORM_strx1] (indexed (00000004) string = "b") +; TYPEUNITS: DW_AT_name [DW_FORM_strx1] (indexed (00000005) string = "b") ; TYPEUNITS-NOT: contents: ; TYPEUNITS: DW_TAG_type_unit ; TYPEUNITS-NOT: {{DW_TAG|NULL}} ; TYPEUNITS: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x[[CU1_STROFF]]) ; TYPEUNITS-NOT: NULL ; TYPEUNITS: DW_TAG_enumeration_type -; TYPEUNITS: DW_AT_name [DW_FORM_strx1] (indexed (0000000b) string = "E2") +; TYPEUNITS: DW_AT_name [DW_FORM_strx1] (indexed (0000000d) string = "E2") ; TYPEUNITS-NOT: contents: ; TYPEUNITS: DW_TAG_type_unit ; TYPEUNITS-NOT: {{DW_TAG|NULL}} ; TYPEUNITS: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x[[CU1_STROFF]]) ; TYPEUNITS-NOT: NULL ; TYPEUNITS: DW_TAG_enumeration_type -; TYPEUNITS: DW_AT_name [DW_FORM_strx1] (indexed (00000010) string = "E3") +; TYPEUNITS: DW_AT_name [DW_FORM_strx1] (indexed (00000013) string = "E3") ; CU 1 ; BOTH-NOT: .contents: @@ -70,20 +70,20 @@ ; BOTH: DW_TAG_compile_unit ; BOTH-NOT: {{DW_TAG|NULL}} ; BOTH: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x[[CU1_STROFF]]) -; DEFUALT: NULL +; BOTH-NOT: NULL ; BOTH: DW_TAG_variable ; BOTH-NOT: {{DW_TAG|NULL}} -; BOTH: DW_AT_name [DW_FORM_strx1] (indexed (00000012) string = "glob2") +; BOTH: DW_AT_name [DW_FORM_strx1] (indexed (00000009) string = "glob2") ; ; CU 3 ; BOTH-NOT: contents: ; BOTH: DW_TAG_compile_unit ; BOTH-NOT: {{DW_TAG|NULL}} ; BOTH: DW_AT_str_offsets_base [DW_FORM_sec_offset] (0x[[CU1_STROFF]]) -; DEFAULT: NULL +; BOTH-NOT: NULL ; BOTH: DW_TAG_variable ; BOTH-NOT: {{DW_TAG|NULL}} -; BOTH: DW_AT_name [DW_FORM_strx1] (indexed (00000013) string = "glob3") +; BOTH: DW_AT_name [DW_FORM_strx1] (indexed (0000000f) string = "glob3") ; ; Extract the offset of a string to verify that it is referenced in the string ; offsets section. @@ -104,16 +104,7 @@ ; BOTH-NEXT: {{.*:}} ; BOTH-NEXT: {{.*:}} ; BOTH-NEXT: {{.*:}} -; BOTH-NEXT: {{.*:}} -; BOTH-NEXT: {{.*:}} -; BOTH-NEXT: {{.*:}} -; BOTH-NEXT: {{.*:}} -; BOTH-NEXT: {{.*:}} -; BOTH-NEXT: {{.*:}} -; BOTH-NEXT: {{.*:}} -; BOTH-NEXT: {{.*:}} -; BOTH-NEXT: {{.*:}} -; The string with index 12 should be "glob2" +; The string with index 9 should be "glob2" ; BOTH-NEXT: {{.*:}} [[GLOB2OFF]] ; ; ModuleID = 'test.bc' diff --git a/llvm/test/DebugInfo/X86/string-offsets-table.ll b/llvm/test/DebugInfo/X86/string-offsets-table.ll --- a/llvm/test/DebugInfo/X86/string-offsets-table.ll +++ b/llvm/test/DebugInfo/X86/string-offsets-table.ll @@ -72,11 +72,11 @@ ; SPLIT-NOT: contents: ; SPLIT: DW_TAG_enumerator ; SPLIT-NOT: {{DW_TAG|NULL}} -; SPLIT: DW_AT_name [DW_FORM_strx1] (indexed (00000000) string = "a") +; SPLIT: DW_AT_name [DW_FORM_strx1] (indexed (00000001) string = "a") ; SPLIT-NOT: contents: ; SPLIT: DW_TAG_enumerator ; SPLIT-NOT: {{DW_TAG|NULL}} -; SPLIT: DW_AT_name [DW_FORM_strx1] (indexed (00000001) string = "b") +; SPLIT: DW_AT_name [DW_FORM_strx1] (indexed (00000002) string = "b") ; ; Extract the string offsets referenced in the main file by the skeleton unit. ; SPLIT: .debug_str contents: diff --git a/llvm/test/DebugInfo/X86/subprogram-across-cus.ll b/llvm/test/DebugInfo/X86/subprogram-across-cus.ll --- a/llvm/test/DebugInfo/X86/subprogram-across-cus.ll +++ b/llvm/test/DebugInfo/X86/subprogram-across-cus.ll @@ -35,12 +35,12 @@ ; Check that there are no verifier failures, and that the SP for "main" appears ; in the correct CU. ; CHECK-LABEL: DW_TAG_compile_unit -; CHECK: DW_AT_name ("1.cpp") -; CHECK-NOT: DW_AT_name ("main") -; CHECK-LABEL: DW_TAG_compile_unit ; CHECK: DW_AT_name ("2.cpp") ; CHECK: DW_TAG_subprogram ; CHECK: DW_AT_name ("main") +; CHECK-LABEL: DW_TAG_compile_unit +; CHECK: DW_AT_name ("1.cpp") +; CHECK-NOT: DW_AT_name ("main") source_filename = "ld-temp.o" target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"