[llvm] Revert "[DebugInfo][DWARF] Emit DW_AT_abstract_origin for concrete/inlined DW_TAG_lexical_blocks" (PR #137237)

David Blaikie via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 24 12:14:40 PDT 2025


https://github.com/dwblaikie created https://github.com/llvm/llvm-project/pull/137237

Reverts llvm/llvm-project#136205

Breaks buildbots, probably something about needing to restrict the test to running on a specific target or the like - I haven't looked closely.

>From dd4b43f1ffd419bbec1554ebb529038066d4eae5 Mon Sep 17 00:00:00 2001
From: Vladislav Dzhidzhoev <dzhidzhoev at gmail.com>
Date: Thu, 24 Apr 2025 19:54:52 +0200
Subject: [PATCH] =?UTF-8?q?Revert=20"[DebugInfo][DWARF]=20Emit=20DW=5FAT?=
 =?UTF-8?q?=5Fabstract=5Forigin=20for=20concrete/inlined=20DW=E2=80=A6"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This reverts commit 1143a04f349c4081a1a2d2503046f6ca422aa338.
---
 .../CodeGen/AsmPrinter/DwarfCompileUnit.cpp   | 15 -----
 .../lib/CodeGen/AsmPrinter/DwarfCompileUnit.h |  5 --
 llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp    |  1 -
 llvm/test/DebugInfo/Generic/inline-scopes.ll  | 15 +----
 .../Generic/lexical-block-abstract-origin.ll  | 56 -------------------
 .../X86/lexical-block-file-inline.ll          | 14 ++---
 .../X86/missing-abstract-variable.ll          |  6 +-
 7 files changed, 8 insertions(+), 104 deletions(-)
 delete mode 100644 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"



More information about the llvm-commits mailing list