Author: Vladislav Dzhidzhoev Date: 2025-04-24T19:54:52+02:00 New Revision: dd4b43f1ffd419bbec1554ebb529038066d4eae5
URL: https://github.com/llvm/llvm-project/commit/dd4b43f1ffd419bbec1554ebb529038066d4eae5 DIFF: https://github.com/llvm/llvm-project/commit/dd4b43f1ffd419bbec1554ebb529038066d4eae5.diff LOG: Revert "[DebugInfo][DWARF] Emit DW_AT_abstract_origin for concrete/inlined DW…" This reverts commit 1143a04f349c4081a1a2d2503046f6ca422aa338. Added: Modified: llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp llvm/test/DebugInfo/Generic/inline-scopes.ll llvm/test/DebugInfo/X86/lexical-block-file-inline.ll llvm/test/DebugInfo/X86/missing-abstract-variable.ll Removed: llvm/test/DebugInfo/Generic/lexical-block-abstract-origin.ll ################################################################################ diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp index a20c374e08935..3939dae81841f 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp @@ -782,8 +782,6 @@ DIE *DwarfCompileUnit::constructLexicalScopeDIE(LexicalScope *Scope) { assert(!LexicalBlockDIEs.count(DS) && "Concrete out-of-line DIE for this scope exists!"); LexicalBlockDIEs[DS] = ScopeDIE; - } else { - InlinedLocalScopeDIEs[DS].push_back(ScopeDIE); } attachRangesOrLowHighPC(*ScopeDIE, Scope->getRanges()); @@ -1493,19 +1491,6 @@ void DwarfCompileUnit::finishEntityDefinition(const DbgEntity *Entity) { getDwarfDebug().addAccelName(*this, CUNode->getNameTableKind(), Name, *Die); } -void DwarfCompileUnit::attachLexicalScopesAbstractOrigins() { - auto AttachAO = [&](const DILocalScope *LS, DIE *ScopeDIE) { - if (auto *AbsLSDie = getAbstractScopeDIEs().lookup(LS)) - addDIEEntry(*ScopeDIE, dwarf::DW_AT_abstract_origin, *AbsLSDie); - }; - - for (auto [LScope, ScopeDIE] : LexicalBlockDIEs) - AttachAO(LScope, ScopeDIE); - for (auto &[LScope, ScopeDIEs] : InlinedLocalScopeDIEs) - for (auto *ScopeDIE : ScopeDIEs) - AttachAO(LScope, ScopeDIE); -} - DbgEntity *DwarfCompileUnit::getExistingAbstractEntity(const DINode *Node) { auto &AbstractEntities = getAbstractEntities(); auto I = AbstractEntities.find(Node); diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h index 09be22ce35e36..104039db03c7c 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h @@ -82,10 +82,6 @@ class DwarfCompileUnit final : public DwarfUnit { // List of abstract local scopes (either DISubprogram or DILexicalBlock). DenseMap<const DILocalScope *, DIE *> AbstractLocalScopeDIEs; - // List of inlined lexical block scopes that belong to subprograms within this - // CU. - DenseMap<const DILocalScope *, SmallVector<DIE *, 2>> InlinedLocalScopeDIEs; - DenseMap<const DINode *, std::unique_ptr<DbgEntity>> AbstractEntities; /// DWO ID for correlating skeleton and split units. @@ -303,7 +299,6 @@ class DwarfCompileUnit final : public DwarfUnit { void finishSubprogramDefinition(const DISubprogram *SP); void finishEntityDefinition(const DbgEntity *Entity); - void attachLexicalScopesAbstractOrigins(); /// Find abstract variable associated with Var. using InlinedEntity = DbgValueHistoryMap::InlinedEntity; diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 6c932651750ee..39f1299a24e81 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -1262,7 +1262,6 @@ void DwarfDebug::finalizeModuleInfo() { auto &TheCU = *P.second; if (TheCU.getCUNode()->isDebugDirectivesOnly()) continue; - TheCU.attachLexicalScopesAbstractOrigins(); // Emit DW_AT_containing_type attribute to connect types with their // vtable holding type. TheCU.constructContainingTypeDIEs(); diff --git a/llvm/test/DebugInfo/Generic/inline-scopes.ll b/llvm/test/DebugInfo/Generic/inline-scopes.ll index 45ecdd0594f64..8e7543eb16e69 100644 --- a/llvm/test/DebugInfo/Generic/inline-scopes.ll +++ b/llvm/test/DebugInfo/Generic/inline-scopes.ll @@ -20,29 +20,16 @@ ; } ; Ensure that lexical_blocks within inlined_subroutines are preserved/emitted. -; CHECK: DW_TAG_subprogram -; CHECK-NEXT: DW_AT_linkage_name ("_Z2f1v") -; CHECK: [[ADDR1:0x[0-9a-f]+]]: DW_TAG_lexical_block -; CHECK: DW_TAG_subprogram -; CHECK-NEXT: DW_AT_linkage_name ("_Z2f2v") -; CHECK: [[ADDR2:0x[0-9a-f]+]]: DW_TAG_lexical_block ; CHECK: DW_TAG_inlined_subroutine ; CHECK-NOT: DW_TAG ; CHECK-NOT: NULL -; CHECK: DW_TAG_lexical_block -; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: DW_AT_abstract_origin ([[ADDR1]] +; CHECK: DW_TAG_lexical_block ; CHECK-NOT: DW_TAG ; CHECK-NOT: NULL ; CHECK: DW_TAG_variable ; Ensure that file changes don't interfere with creating inlined subroutines. ; (see the line directive inside 'f2' in thesource) ; CHECK: DW_TAG_inlined_subroutine -; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: DW_TAG_lexical_block -; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: DW_AT_abstract_origin ([[ADDR2]] -; CHECK-NOT: {{DW_TAG|NULL}} ; CHECK: DW_TAG_variable ; CHECK-NOT: DW_TAG ; CHECK: DW_AT_abstract_origin diff --git a/llvm/test/DebugInfo/Generic/lexical-block-abstract-origin.ll b/llvm/test/DebugInfo/Generic/lexical-block-abstract-origin.ll deleted file mode 100644 index cbe2b818fba38..0000000000000 --- a/llvm/test/DebugInfo/Generic/lexical-block-abstract-origin.ll +++ /dev/null @@ -1,56 +0,0 @@ -; RUN: %llc_dwarf -filetype=obj -O0 %s -o - | llvm-dwarfdump -debug-info - | FileCheck %s - -; Check that DW_AT_abstract_origin is generated for concrete lexical block. - -; Generated from: -; inline __attribute__((always_inline)) int foo(int x) { -; { -; int y = x + 5; -; return y - 10; -; } -; } -; -; int bar(int x) { -; int y = foo(7); -; return y + 8; -; } - -; CHECK: DW_TAG_subprogram -; CHECK-NEXT: DW_AT_name ("foo") -; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: [[LB:.*]]: DW_TAG_lexical_block - -; CHECK: DW_TAG_inlined_subroutine -; CHECK-NEXT: DW_AT_abstract_origin {{.*}} "foo" -; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: DW_TAG_lexical_block -; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: DW_AT_abstract_origin {{.*}}[[LB]] - -target datalayout = "e-m:o-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-n32:64-S128-Fn32" -target triple = "arm64-apple-macosx15.0.0" - -define i32 @bar() !dbg !9 { -entry: - %y.i = alloca i32, align 4 - #dbg_declare(ptr %y.i, !22, !DIExpression(), !24) - store i32 0, ptr %y.i, align 4, !dbg !24 - %1 = load i32, ptr %y.i, align 4 - ret i32 %1 -} - -!llvm.dbg.cu = !{!0} -!llvm.module.flags = !{!3} - -!0 = distinct !DICompileUnit(language: DW_LANG_C11, file: !1, emissionKind: FullDebug) -!1 = !DIFile(filename: "test.c", directory: "") -!3 = !{i32 2, !"Debug Info Version", i32 3} -!9 = distinct !DISubprogram(name: "bar", scope: !1, file: !1, line: 8, type: !10, spFlags: DISPFlagDefinition, unit: !0) -!10 = !DISubroutineType(types: !13) -!12 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) -!13 = !{} -!19 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 1, type: !10, scopeLine: 1, spFlags: DISPFlagDefinition, unit: !0) -!21 = distinct !DILocation(line: 9, column: 11, scope: !9) -!22 = !DILocalVariable(name: "y", scope: !23, file: !1, line: 3, type: !12) -!23 = distinct !DILexicalBlock(scope: !19, file: !1, line: 2, column: 3) -!24 = !DILocation(line: 3, column: 9, scope: !23, inlinedAt: !21) diff --git a/llvm/test/DebugInfo/X86/lexical-block-file-inline.ll b/llvm/test/DebugInfo/X86/lexical-block-file-inline.ll index e8136f8eea965..15d0785bde93d 100644 --- a/llvm/test/DebugInfo/X86/lexical-block-file-inline.ll +++ b/llvm/test/DebugInfo/X86/lexical-block-file-inline.ll @@ -28,11 +28,9 @@ ; CHECK: DW_TAG_subprogram ; CHECK-NOT: {{DW_TAG|NULL}} ; CHECK: DW_AT_abstract_origin {{.*}} {[[Offset_bar:0x[0-9abcdef]+]]} -; CHECK-NOT: {{DW_TAG|NULL}} +; CHECK-NOT: {{DW_TAG|NULL}} ; CHECK: DW_TAG_lexical_block -; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: DW_AT_abstract_origin {{.*}}[[Offset_lb:0x[0-9a-f]+]] -; CHECK-NOT: {{DW_TAG|NULL}} +; CHECK-NOT: {{DW_TAG|NULL}} ; CHECK: DW_TAG_variable ;; Abstract "bar" function @@ -42,7 +40,7 @@ ; CHECK-NOT: {{DW_TAG|NULL}} ; CHECK: DW_AT_inline ; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: [[Offset_lb]]: DW_TAG_lexical_block +; CHECK: DW_TAG_lexical_block ; CHECK-NOT: {{DW_TAG|NULL}} ; CHECK: DW_TAG_variable ; CHECK-NOT: {{DW_TAG|NULL}} @@ -58,10 +56,8 @@ ; CHECK-NEXT: DW_AT_abstract_origin {{.*}} {[[Offset_bar]]} ; CHECK-NOT: {{DW_TAG|NULL}} ; CHECK: DW_TAG_lexical_block -; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: DW_AT_abstract_origin {{.*}}[[Offset_lb]] -; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: DW_TAG_variable +; CHECK-NOT: {{DW_TAG|NULL}} +; CHECK: DW_TAG_variable ; Function Attrs: alwaysinline nounwind define i32 @_Z3barv() #0 !dbg !4 { diff --git a/llvm/test/DebugInfo/X86/missing-abstract-variable.ll b/llvm/test/DebugInfo/X86/missing-abstract-variable.ll index 21363805aff2f..572dca2c2cb6c 100644 --- a/llvm/test/DebugInfo/X86/missing-abstract-variable.ll +++ b/llvm/test/DebugInfo/X86/missing-abstract-variable.ll @@ -37,7 +37,7 @@ ; CHECK-NOT: DW_TAG ; CHECK: DW_AT_name ("b") ; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: [[LB_DECL:.*]]: DW_TAG_lexical_block +; CHECK: DW_TAG_lexical_block ; CHECK-NOT: {{DW_TAG|NULL}} ; CHECK: DW_TAG_variable ; CHECK-NOT: DW_TAG @@ -82,9 +82,7 @@ ; CHECK-NOT: {{DW_TAG|NULL}} ; CHECK: DW_TAG_lexical_block -; CHECK-NOT: {{DW_TAG|NULL}} -; CHECK: DW_AT_abstract_origin {{.*}}[[LB_DECL]] -; CHECK-NOT: {{DW_TAG|NULL}} +; CHECK-NOT: {{DW_TAG|NULL}} ; CHECK: DW_TAG_variable ; CHECK-NOT: DW_TAG ; CHECK: DW_AT_abstract_origin {{.*}} "s" _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits