Skip to content

Revert "[llvm-debuginfo-analyzer] Add support for LLVM IR format. (#200603)" - #201019

Merged
CarlosAlbertoEnciso merged 1 commit into
llvm:mainfrom
CarlosAlbertoEnciso:debuginfo-analyzer-ir-reader-revert-2
Jun 2, 2026
Merged

Revert "[llvm-debuginfo-analyzer] Add support for LLVM IR format. (#200603)"#201019
CarlosAlbertoEnciso merged 1 commit into
llvm:mainfrom
CarlosAlbertoEnciso:debuginfo-analyzer-ir-reader-revert-2

Conversation

@CarlosAlbertoEnciso

Copy link
Copy Markdown
Member

This reverts commit 4cef4ef.

There are link issues with some buildbots.

…vm#200603)"

This reverts commit 4cef4ef.

There are link issues with some buildbots.
@llvmorg-github-actions

llvmorg-github-actions Bot commented Jun 2, 2026

Copy link
Copy Markdown

@llvm/pr-subscribers-llvm-binary-utilities

@llvm/pr-subscribers-llvm-transforms

Author: Carlos Alberto Enciso (CarlosAlbertoEnciso)

Changes

This reverts commit 4cef4ef.

There are link issues with some buildbots.


Patch is 239.25 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/201019.diff

41 Files Affected:

  • (modified) llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst (+126-79)
  • (modified) llvm/include/llvm/DebugInfo/LogicalView/Core/LVElement.h (-7)
  • (modified) llvm/include/llvm/DebugInfo/LogicalView/Core/LVLocation.h (-7)
  • (modified) llvm/include/llvm/DebugInfo/LogicalView/Core/LVReader.h (-3)
  • (modified) llvm/include/llvm/DebugInfo/LogicalView/Core/LVSupport.h (+1-14)
  • (modified) llvm/include/llvm/DebugInfo/LogicalView/LVReaderHandler.h (+2-7)
  • (modified) llvm/include/llvm/DebugInfo/LogicalView/Readers/LVBinaryReader.h (-1)
  • (removed) llvm/include/llvm/DebugInfo/LogicalView/Readers/LVIRReader.h (-303)
  • (modified) llvm/lib/DebugInfo/LogicalView/CMakeLists.txt (-3)
  • (modified) llvm/lib/DebugInfo/LogicalView/Core/LVElement.cpp (+4-13)
  • (modified) llvm/lib/DebugInfo/LogicalView/Core/LVLocation.cpp (-5)
  • (modified) llvm/lib/DebugInfo/LogicalView/Core/LVReader.cpp (+1-29)
  • (modified) llvm/lib/DebugInfo/LogicalView/LVReaderHandler.cpp (+8-32)
  • (removed) llvm/lib/DebugInfo/LogicalView/Readers/LVIRReader.cpp (-2630)
  • (modified) llvm/lib/Transforms/Utils/DebugSSAUpdater.cpp (+2-9)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/01-ir-compare-logical-elements.test (-121)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/01-ir-print-basic-details.test (-78)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/01-ir-select-logical-elements.test (-151)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/02-ir-logical-lines.test (-60)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/03-ir-incorrect-lexical-scope-typedef.test (-131)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/04-ir-missing-nested-enumerators.test (-144)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/05-ir-incorrect-lexical-scope-variable.test (-113)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/06-ir-full-logical-view.test (-121)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/07-ir-debug-formats.test (-48)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/08-ir-multiple-compile-units.test (-168)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/Inputs/compile-unit-1.ll (-58)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/Inputs/compile-unit-2.ll (-58)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/Inputs/compile-unit-3.ll (-58)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/Inputs/compile-unit.ll (-34)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/Inputs/hello-world-clang.ll (-49)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/Inputs/pr-43860-clang.ll (-92)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/Inputs/pr-44884-clang.ll (-98)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/Inputs/pr-46466-clang.ll (-44)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/Inputs/test-clang-intrinsics.ll (-87)
  • (removed) llvm/test/tools/llvm-debuginfo-analyzer/IR/Inputs/test-clang.ll (-83)
  • (modified) llvm/tools/llvm-debuginfo-analyzer/CMakeLists.txt (-2)
  • (modified) llvm/unittests/DebugInfo/LogicalView/CMakeLists.txt (-3)
  • (removed) llvm/unittests/DebugInfo/LogicalView/IRReaderTest.cpp (-362)
  • (modified) llvm/unittests/DebugInfo/LogicalView/Inputs/README.md (-12)
  • (removed) llvm/unittests/DebugInfo/LogicalView/Inputs/test-clang.bc ()
  • (removed) llvm/unittests/DebugInfo/LogicalView/Inputs/test-clang.ll (-83)
diff --git a/llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst b/llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
index 221732775e74c..6fcf8423e8125 100644
--- a/llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
+++ b/llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
@@ -13,11 +13,10 @@ SYNOPSIS
 DESCRIPTION
 -----------
 :program:`llvm-debuginfo-analyzer` parses debug and text sections in
-binary object files or LLVM IR textual / bitcode representation and prints
-their contents in a logical view, which is a human readable representation
-that closely matches the structure of the original user source code.
-Supported object file formats include ELF, Mach-O, WebAssembly, PDB,
-COFF and IR (textual representation and bitcode).
+binary object files and prints their contents in a logical view, which
+is a human-readable representation that closely matches the structure
+of the original user source code. Supported object file formats include
+ELF, Mach-O, WebAssembly, PDB and COFF.
 
 The **logical view** abstracts the complexity associated with the
 different low-level representations of the debugging information that
@@ -2132,95 +2131,143 @@ layout and given the number of matches.
   -----------------------------
   Total           71          8
 
-LLVM IR (textual / bitcode representation) SUPPORT
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The below example is used to show the IR output generated by
-:program:`llvm-debuginfo-analyzer`. We compiled the example for a
-IR 64-bit target with Clang (-O0 -g --target=x86_64-linux):
+COMPARISON MODE
+^^^^^^^^^^^^^^^
+Given the previous example we found the above debug information issue
+(related to the previous invalid scope location for the **'typedef int
+INTEGER'**) by comparing against another compiler.
 
-.. code-block:: c++
+Using GCC to generate test-dwarf-gcc.o, we can apply a selection pattern
+with the printing mode to obtain the following logical view output.
 
-  1  using INTPTR = const int *;
-  2  int foo(INTPTR ParamPtr, unsigned ParamUnsigned, bool ParamBool) {
-  3    if (ParamBool) {
-  4      typedef int INTEGER;
-  5      const INTEGER CONSTANT = 7;
-  6      return CONSTANT;
-  7    }
-  8    return ParamUnsigned;
-  9  }
+.. code-block:: none
 
-PRINT BASIC DETAILS
-^^^^^^^^^^^^^^^^^^^
-The following command prints basic details for all the logical elements
-sorted by the debug information internal offset; it includes its lexical
-level and debug info format.
+  llvm-debuginfo-analyzer --attribute=level
+                          --select-regex --select-nocase --select=INTe
+                          --report=list
+                          --print=symbols,types
+                          test-clang.o test-dwarf-gcc.o
+
+  Logical View:
+  [000]           {File} 'test-clang.o'
+
+  [001]           {CompileUnit} 'test.cpp'
+  [003]     4     {TypeAlias} 'INTEGER' -> 'int'
+  [004]     5     {Variable} 'CONSTANT' -> 'const INTEGER'
+
+  Logical View:
+  [000]           {File} 'test-dwarf-gcc.o'
+
+  [001]           {CompileUnit} 'test.cpp'
+  [004]     4     {TypeAlias} 'INTEGER' -> 'int'
+  [004]     5     {Variable} 'CONSTANT' -> 'const INTEGER'
+
+The output shows that both objects contain the same elements. But the
+**'typedef INTEGER'** is located at different scope level. The GCC
+generated object, shows **'4'**, which is the correct value.
+
+There are 2 comparison methods: logical view and logical elements.
+
+LOGICAL VIEW
+""""""""""""
+It compares the logical view as a whole unit; for a match, each compared
+logical element must have the same parents and children.
+
+The output shows in view form the **missing (-), added (+)** elements,
+giving more context by swapping the reference and target object files.
 
 .. code-block:: none
 
-  llvm-debuginfo-analyzer --attribute=level,format
-                          --output-sort=offset
-                          --print=scopes,symbols,types,lines,instructions
-                          test-clang.ll
+  llvm-debuginfo-analyzer --attribute=level
+                          --compare=types
+                          --report=view
+                          --print=symbols,types
+                          test-clang.o test-dwarf-gcc.o
 
-or
+  Reference: 'test-clang.o'
+  Target:    'test-dwarf-gcc.o'
+
+  Logical View:
+   [000]           {File} 'test-clang.o'
+
+   [001]             {CompileUnit} 'test.cpp'
+   [002]     1         {TypeAlias} 'INTPTR' -> '* const int'
+   [002]     2         {Function} extern not_inlined 'foo' -> 'int'
+   [003]                 {Block}
+   [004]     5             {Variable} 'CONSTANT' -> 'const INTEGER'
+  +[004]     4             {TypeAlias} 'INTEGER' -> 'int'
+   [003]     2           {Parameter} 'ParamBool' -> 'bool'
+   [003]     2           {Parameter} 'ParamPtr' -> 'INTPTR'
+   [003]     2           {Parameter} 'ParamUnsigned' -> 'unsigned int'
+  -[003]     4           {TypeAlias} 'INTEGER' -> 'int'
+
+The output shows the merging view path (reference and target) with the
+missing and added elements.
+
+LOGICAL ELEMENTS
+""""""""""""""""
+It compares individual logical elements without considering if their
+parents are the same. For both comparison methods, the equal criteria
+includes the name, source code location, type, lexical scope level.
 
 .. code-block:: none
 
-  llvm-debuginfo-analyzer --attribute=level,format
-                          --output-sort=offset
-                          --print=elements
-                          test-clang.ll
+  llvm-debuginfo-analyzer --attribute=level
+                          --compare=types
+                          --report=list
+                          --print=symbols,types,summary
+                          test-clang.o test-dwarf-gcc.o
 
-Each row represents an element that is present within the debug
-information. The first column represents the scope level, followed by
-the associated line number (if any), and finally the description of
-the element.
+  Reference: 'test-clang.o'
+  Target:    'test-dwarf-gcc.o'
+
+  (1) Missing Types:
+  -[003]     4     {TypeAlias} 'INTEGER' -> 'int'
+
+  (1) Added Types:
+  +[004]     4     {TypeAlias} 'INTEGER' -> 'int'
+
+  ----------------------------------------
+  Element   Expected    Missing      Added
+  ----------------------------------------
+  Scopes           4          0          0
+  Symbols          0          0          0
+  Types            2          1          1
+  Lines            0          0          0
+  ----------------------------------------
+  Total            6          1          1
+
+Changing the *Reference* and *Target* order:
 
 .. code-block:: none
 
-  Logical View:
-  [000]           {File} 'test-clang.ll' -> Textual IR
+  llvm-debuginfo-analyzer --attribute=level
+                          --compare=types
+                          --report=list
+                          --print=symbols,types,summary
+                          test-dwarf-gcc.o test-clang.o
 
-  [001]             {CompileUnit} 'test.cpp'
-  [002]     2         {Function} extern not_inlined 'foo' -> 'int'
-  [003]                 {Block}
-  [004]     5             {Variable} 'CONSTANT' -> 'const INTEGER'
-  [004]     5             {Line}
-  [004]                   {Code} 'store i32 7, ptr %CONSTANT, align 4, !dbg !32'
-  [004]     6             {Line}
-  [004]                   {Code} 'store i32 7, ptr %retval, align 4, !dbg !33'
-  [004]     6             {Line}
-  [004]                   {Code} 'br label %return, !dbg !33'
-  [003]     2           {Parameter} 'ParamPtr' -> 'INTPTR'
-  [003]     2           {Parameter} 'ParamUnsigned' -> 'unsigned int'
-  [003]     2           {Parameter} 'ParamBool' -> 'bool'
-  [003]     4           {TypeAlias} 'INTEGER' -> 'int'
-  [003]     2           {Line}
-  [003]                 {Code} '%retval = alloca i32, align 4'
-  [003]                 {Code} '%ParamPtr.addr = alloca ptr, align 8'
-  [003]                 {Code} '%ParamUnsigned.addr = alloca i32, align 4'
-  [003]                 {Code} '%ParamBool.addr = alloca i8, align 1'
-  [003]                 {Code} '%CONSTANT = alloca i32, align 4'
-  [003]                 {Code} 'store ptr %ParamPtr, ptr %ParamPtr.addr, align 8'
-  [003]                 {Code} 'store i32 %ParamUnsigned, ptr %ParamUnsigned.addr, align 4'
-  [003]                 {Code} '%storedv = zext i1 %ParamBool to i8'
-  [003]                 {Code} 'store i8 %storedv, ptr %ParamBool.addr, align 1'
-  [003]     8           {Line}
-  [003]                 {Code} '%1 = load i32, ptr %ParamUnsigned.addr, align 4, !dbg !34'
-  [003]     8           {Line}
-  [003]                 {Code} 'store i32 %1, ptr %retval, align 4, !dbg !35'
-  [003]     8           {Line}
-  [003]                 {Code} 'br label %return, !dbg !35'
-  [003]     9           {Line}
-  [003]                 {Code} '%2 = load i32, ptr %retval, align 4, !dbg !36'
-  [003]     9           {Line}
-  [003]                 {Code} 'ret i32 %2, !dbg !36'
-  [003]     3           {Line}
-  [003]     3           {Line}
-  [003]     3           {Line}
-  [003]                 {Code} 'br i1 %loadedv, label %if.then, label %if.end, !dbg !26'
-  [002]     1         {TypeAlias} 'INTPTR' -> '* const int'
+  Reference: 'test-dwarf-gcc.o'
+  Target:    'test-clang.o'
+
+  (1) Missing Types:
+  -[004]     4     {TypeAlias} 'INTEGER' -> 'int'
+
+  (1) Added Types:
+  +[003]     4     {TypeAlias} 'INTEGER' -> 'int'
+
+  ----------------------------------------
+  Element   Expected    Missing      Added
+  ----------------------------------------
+  Scopes           4          0          0
+  Symbols          0          0          0
+  Types            2          1          1
+  Lines            0          0          0
+  ----------------------------------------
+  Total            6          1          1
+
+As the *Reference* and *Target* are switched, the *Added Types* from
+the first case now are listed as *Missing Types*.
 
 EXIT STATUS
 -----------
diff --git a/llvm/include/llvm/DebugInfo/LogicalView/Core/LVElement.h b/llvm/include/llvm/DebugInfo/LogicalView/Core/LVElement.h
index 793a66e40b02b..34bace886a15f 100644
--- a/llvm/include/llvm/DebugInfo/LogicalView/Core/LVElement.h
+++ b/llvm/include/llvm/DebugInfo/LogicalView/Core/LVElement.h
@@ -374,13 +374,6 @@ class LLVM_ABI LVElement : public LVObject {
   // Report the current element as missing or added during comparison.
   virtual void report(LVComparePass Pass) {}
 
-  // Print the basic and extra information. Used mainly to debug IR.
-  void printCommon(raw_ostream &OS, bool Full = true) const;
-
-#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
-  void dumpCommon() const { printCommon(dbgs(), /*Full=*/true); }
-#endif
-
   static LVElementDispatch &getDispatch() { return Dispatch; }
 };
 
diff --git a/llvm/include/llvm/DebugInfo/LogicalView/Core/LVLocation.h b/llvm/include/llvm/DebugInfo/LogicalView/Core/LVLocation.h
index 6bf7f9d2105f8..090af54cd1b85 100644
--- a/llvm/include/llvm/DebugInfo/LogicalView/Core/LVLocation.h
+++ b/llvm/include/llvm/DebugInfo/LogicalView/Core/LVLocation.h
@@ -159,13 +159,6 @@ class LLVM_ABI LVLocation : public LVObject {
 
   void print(raw_ostream &OS, bool Full = true) const override;
   void printExtra(raw_ostream &OS, bool Full = true) const override;
-
-  // Print the basic and extra information. Used mainly to debug IR.
-  void printCommon(raw_ostream &OS, bool Full = true) const;
-
-#if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
-  void dumpCommon() const { printCommon(dbgs(), /*Full=*/true); }
-#endif
 };
 
 class LLVM_ABI LVLocationSymbol final : public LVLocation {
diff --git a/llvm/include/llvm/DebugInfo/LogicalView/Core/LVReader.h b/llvm/include/llvm/DebugInfo/LogicalView/Core/LVReader.h
index 774318cb3c53e..371bffb2ed163 100644
--- a/llvm/include/llvm/DebugInfo/LogicalView/Core/LVReader.h
+++ b/llvm/include/llvm/DebugInfo/LogicalView/Core/LVReader.h
@@ -193,9 +193,6 @@ class LLVM_ABI LVReader {
   virtual Error printMatchedElements(bool UseMatchedElements);
   virtual void sortScopes() {}
 
-  void printCollectedElements(LVScope *Root);
-  bool checkIntegrityScopesTree(LVScope *Root);
-
 public:
   LVReader() = delete;
   LVReader(StringRef InputFilename, StringRef FileFormatName, ScopedPrinter &W,
diff --git a/llvm/include/llvm/DebugInfo/LogicalView/Core/LVSupport.h b/llvm/include/llvm/DebugInfo/LogicalView/Core/LVSupport.h
index 756bb18aeff12..eec5df19ff843 100644
--- a/llvm/include/llvm/DebugInfo/LogicalView/Core/LVSupport.h
+++ b/llvm/include/llvm/DebugInfo/LogicalView/Core/LVSupport.h
@@ -119,20 +119,7 @@ template <typename T> class LVProperties {
 #define KIND_3(ENUM, FIELD, F1, F2, F3)                                        \
   BOOL_BIT_3(Kinds, ENUM, FIELD, F1, F2, F3)
 
-static constexpr int DEC_WIDTH = 8;
-inline FormattedNumber decValue(uint64_t N, unsigned Width = DEC_WIDTH) {
-  return format_decimal(N, Width);
-}
-
-// Output the decimal representation of 'Value'.
-inline std::string decString(uint64_t Value, size_t Width = DEC_WIDTH) {
-  std::string String;
-  raw_string_ostream Stream(String);
-  Stream << decValue(Value, Width);
-  return String;
-}
-
-static constexpr int HEX_WIDTH = 12;
+const int HEX_WIDTH = 12;
 inline FormattedNumber hexValue(uint64_t N, unsigned Width = HEX_WIDTH,
                                 bool Upper = false) {
   return format_hex(N, Width, Upper);
diff --git a/llvm/include/llvm/DebugInfo/LogicalView/LVReaderHandler.h b/llvm/include/llvm/DebugInfo/LogicalView/LVReaderHandler.h
index 3336c9415927c..f6dc65f39c7ac 100644
--- a/llvm/include/llvm/DebugInfo/LogicalView/LVReaderHandler.h
+++ b/llvm/include/llvm/DebugInfo/LogicalView/LVReaderHandler.h
@@ -17,7 +17,6 @@
 #include "llvm/DebugInfo/LogicalView/Core/LVReader.h"
 #include "llvm/DebugInfo/PDB/Native/PDBFile.h"
 #include "llvm/Object/Archive.h"
-#include "llvm/Object/IRObjectFile.h"
 #include "llvm/Object/MachOUniversal.h"
 #include "llvm/Object/ObjectFile.h"
 #include "llvm/Support/Compiler.h"
@@ -31,9 +30,7 @@ namespace logicalview {
 
 using LVReaders = std::vector<std::unique_ptr<LVReader>>;
 using ArgVector = std::vector<std::string>;
-using InputHandle =
-    PointerUnion<object::ObjectFile *, pdb::PDBFile *, object::IRObjectFile *,
-                 MemoryBufferRef *, StringRef *>;
+using PdbOrObj = PointerUnion<object::ObjectFile *, pdb::PDBFile *>;
 
 // This class performs the following tasks:
 // - Creates a logical reader for every binary file in the command line,
@@ -64,10 +61,8 @@ class LVReaderHandler {
                      object::Binary &Binary);
   Error handleObject(LVReaders &Readers, StringRef Filename, StringRef Buffer,
                      StringRef ExePath);
-  Error handleObject(LVReaders &Readers, StringRef Filename,
-                     MemoryBufferRef Buffer);
 
-  Error createReader(StringRef Filename, LVReaders &Readers, InputHandle &Input,
+  Error createReader(StringRef Filename, LVReaders &Readers, PdbOrObj &Input,
                      StringRef FileFormatName, StringRef ExePath = {});
 
 public:
diff --git a/llvm/include/llvm/DebugInfo/LogicalView/Readers/LVBinaryReader.h b/llvm/include/llvm/DebugInfo/LogicalView/Readers/LVBinaryReader.h
index f5590ad40c993..64389902ea6fd 100644
--- a/llvm/include/llvm/DebugInfo/LogicalView/Readers/LVBinaryReader.h
+++ b/llvm/include/llvm/DebugInfo/LogicalView/Readers/LVBinaryReader.h
@@ -26,7 +26,6 @@
 #include "llvm/MC/MCTargetOptions.h"
 #include "llvm/MC/TargetRegistry.h"
 #include "llvm/Object/COFF.h"
-#include "llvm/Object/IRObjectFile.h"
 #include "llvm/Object/ObjectFile.h"
 
 namespace llvm {
diff --git a/llvm/include/llvm/DebugInfo/LogicalView/Readers/LVIRReader.h b/llvm/include/llvm/DebugInfo/LogicalView/Readers/LVIRReader.h
deleted file mode 100644
index 6f0f5d7bbd86b..0000000000000
--- a/llvm/include/llvm/DebugInfo/LogicalView/Readers/LVIRReader.h
+++ /dev/null
@@ -1,303 +0,0 @@
-//===-- LVIRReader.h --------------------------------------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file defines the LVIRReader class, which is used to describe a
-// LLVM IR reader.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_DEBUGINFO_LOGICALVIEW_READERS_LVIRREADER_H
-#define LLVM_DEBUGINFO_LOGICALVIEW_READERS_LVIRREADER_H
-
-#include "llvm/DebugInfo/LogicalView/Core/LVReader.h"
-#include "llvm/Transforms/Utils/DebugSSAUpdater.h"
-#include <unordered_map>
-
-namespace llvm {
-class DIFile;
-class DINode;
-class DILocation;
-class DIScope;
-class DISubprogram;
-class DIVariable;
-class BasicBlock;
-class Module;
-
-namespace object {
-class IRObjectFile;
-}
-
-namespace logicalview {
-
-class LVElement;
-class LVLine;
-class LVScopeCompileUnit;
-class LVSymbol;
-class LVType;
-struct LVSourceLanguage;
-
-class LVIRReader final : public LVReader {
-  PointerUnion<object::IRObjectFile *, MemoryBufferRef *> InputFile;
-
-  // Used by the metadata 'dump' functions, so the metadata nodes will be
-  // numbered canonically; otherwise, pointer addresses are substituted.
-  Module *TheModule = nullptr;
-
-  // Symbols with locations for current compile unit.
-  LVSymbols SymbolsWithLocations;
-
-  const DICompileUnit *CUNode = nullptr;
-
-  // The Dwarf version (from the module flags).
-  unsigned DwarfVersion = 0;
-
-  // Location index for global variables.
-  uint64_t PoolAddressIndex = 0;
-
-  // Default lower bound for arrays.
-  int64_t DefaultLowerBound = 0;
-
-  // Whether to emit all linkage names, or just abstract subprograms.
-  bool UseAllLinkageNames = true;
-
-  SSAValueNameMap ValueNameMap;
-  DenseMap<void *, uint64_t> InstrLineAddrMap;
-  std::unique_ptr<DbgValueRangeTable> DbgValueRanges;
-
-  // Record the last assigned file index for each compile unit.
-  // This data structure is to aid mapping DIFiles onto a DWARF-like file table.
-  using LVIndexFiles = std::unordered_map<LVScopeCompileUnit *, size_t>;
-  LVIndexFiles IndexFiles;
-
-  // Store a FileID number for each DIFile seen.
-  using LVCompileUnitFiles = std::unordered_map<const DIFile *, size_t>;
-  LVCompileUnitFiles CompileUnitFiles;
-
-  // Associate the metadata objects to logical elements.
-  using LVMDObjects = std::unordered_map<const MDNode *, LVElement *>;
-  LVMDObjects MDObjects;
-
-  // An anonymous type for index type.
-  LVType *NodeIndexType = nullptr;
-
-  // Looking at IR generated with the '-gdwarf -gsplit-dwarf=split' the only
-  // difference is setting the 'DICompileUnit::splitDebugFilename' to the
-  // name of the split filename: "xxx.dwo".
-  bool includeMinimalInlineScopes() const;
-  bool useAllLinkageNames() const { return UseAllLinkageNames; }
-
-  int64_t getDefaultLowerBound() const { return DefaultLowerBound; }
-  void setDefaultLowerBound(LVSourceLanguage *SL);
-
-  // We assume a constant instruction-size increase between instructions.
-  static constexpr unsigned OFFSET_INCREASE = 4;
-  void updateLineOffset() { CurrentOffset += OFFSET_INCREASE; }
-
-  void updateFileIndex(LVScopeCompileUnit *CompileUnit, size_t FileIndex) {
-    auto [Iter, Inserted] = IndexFiles.try_emplace(CompileUnit, FileIndex);
-    if (!Inserted)
-      Iter->second = FileIndex;
-  }
-
-  // Get the current assigned index file for the given compile unit.
-  size_t getFileIndex(LVScopeCompileUnit *CompileUnit) {
-    LVIndexFiles::iterator Iter = IndexFiles.find(CompileUnit);
-    return Iter != IndexFiles.end() ? Iter->second : 0;
-  }
-
-  // For the given 'DIFile', generate a 1-based index to indicate the
-  // source file where the logical element is declared.
-  // The IR reader expects the indexes to be 1-based.
-  // Each compile unit, keeps track of the last assigned index.
-  size_t getOrCreateSourceID(const DIFile *File);
-
-  void addMD(const MDNode *MD, LVElement *Element) {
-    MDObjects.try_emplace(MD, Element);
-  }
-  LVElement *getElementForSeenMD(const MDNode *MD) const {
-    LVMDObjects::const_iterator Iter = MDObjects.find(MD);
-    return Iter != MDObjects.end() ? Iter->second : nullptr;
-  }
-  LVScope *getScopeForSeenMD(const MDNode *MD) const {
-    return static_cast<LVScope *>(getElementForSeenMD(MD));
...
[truncated]

@CarlosAlbertoEnciso
CarlosAlbertoEnciso merged commit 9547e0f into llvm:main Jun 2, 2026
12 of 15 checks passed
@llvm-ci

llvm-ci commented Jun 2, 2026

Copy link
Copy Markdown

LLVM Buildbot has detected a new failure on builder lldb-aarch64-windows running on linaro-armv8-windows-msvc-05 while building llvm at step 6 "test".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/141/builds/19138

Here is the relevant piece of the build log for the reference
Step 6 (test) failure: build (failure)
...
UNSUPPORTED: lldb-api :: functionalities/thread/concurrent_events/TestConcurrentWatchpointDelayWatchpointOneBreakpoint.py (725 of 2539)
UNSUPPORTED: lldb-api :: functionalities/thread/concurrent_events/TestConcurrentWatchpointWithDelayWatchpointThreads.py (726 of 2539)
UNSUPPORTED: lldb-api :: functionalities/thread/concurrent_events/exit/TestConcurrentThreadExit.py (727 of 2539)
UNSUPPORTED: lldb-api :: functionalities/thread/crash_during_step/TestCrashDuringStep.py (728 of 2539)
UNSUPPORTED: lldb-api :: functionalities/thread/create_after_attach/TestCreateAfterAttach.py (729 of 2539)
PASS: lldb-api :: functionalities/thread/exit_during_break/TestExitDuringBreak.py (730 of 2539)
XFAIL: lldb-api :: functionalities/thread/create_during_step/TestCreateDuringStep.py (731 of 2539)
UNSUPPORTED: lldb-api :: functionalities/thread/exit_during_expression/TestExitDuringExpression.py (732 of 2539)
UNSUPPORTED: lldb-api :: functionalities/thread/exit_during_step/TestExitDuringStep.py (733 of 2539)
PASS: lldb-api :: functionalities/thread/finish-from-empty-func/TestEmptyFuncThreadStepOut.py (734 of 2539)
FAIL: lldb-api :: functionalities/thread/jump/TestThreadJump.py (735 of 2539)
******************** TEST 'lldb-api :: functionalities/thread/jump/TestThreadJump.py' FAILED ********************
Script:
--
C:/Users/tcwg/scoop/apps/python/current/python.exe C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/llvm-project/lldb\test\API\dotest.py -u CXXFLAGS -u CFLAGS --env LLVM_LIBS_DIR=C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./lib --env LLVM_INCLUDE_DIR=C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/include --env LLVM_TOOLS_DIR=C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./bin --triple aarch64-pc-windows-msvc --build-dir C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/lldb-test-build.noindex --lldb-module-cache-dir C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/lldb-test-build.noindex/module-cache-lldb\lldb-api --clang-module-cache-dir C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/lldb-test-build.noindex/module-cache-clang\lldb-api --executable C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./bin/lldb.exe --compiler C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./bin/clang.exe --dsymutil C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./bin/dsymutil.exe --make C:/Users/tcwg/scoop/shims/make.exe --llvm-tools-dir C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./bin --lldb-obj-root C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/tools/lldb --lldb-libs-dir C:/Users/tcwg/llvm-worker/lldb-aarch64-windows/build/./lib --cmake-build-type Release --skip-category=watchpoint --env LLDB_LAUNCH_FLAG_USE_PIPES=1 C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\llvm-project\lldb\test\API\functionalities\thread\jump -p TestThreadJump.py
--
Exit Code: 1

Command Output (stdout):
--
lldb version 23.0.0git (https://github.com/llvm/llvm-project.git revision 9547e0f5960bb1021112c5a373217c209b6b4014)
  clang revision 9547e0f5960bb1021112c5a373217c209b6b4014
  llvm revision 9547e0f5960bb1021112c5a373217c209b6b4014
Skipping the following test categories: watchpoint, libc++, libstdcxx, dwo, dsym, gmodules, debugserver, objc, fork, pexpect


--
Command Output (stderr):
--
UNSUPPORTED: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_dsym (TestThreadJump.ThreadJumpTestCase.test_dsym) (test case does not fall in any category of interest for this run) 

FAIL: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_dwarf (TestThreadJump.ThreadJumpTestCase.test_dwarf)

Log Files:

 - C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\lldb-test-build.noindex\functionalities\thread\jump\TestThreadJump\Failure_test_dwarf.log

UNSUPPORTED: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_dwo (TestThreadJump.ThreadJumpTestCase.test_dwo) (test case does not fall in any category of interest for this run) 

UNSUPPORTED: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_jump_offset_dsym (TestThreadJump.ThreadJumpTestCase.test_jump_offset_dsym) (test case does not fall in any category of interest for this run) 

PASS: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_jump_offset_dwarf (TestThreadJump.ThreadJumpTestCase.test_jump_offset_dwarf)

UNSUPPORTED: LLDB (C:\Users\tcwg\llvm-worker\lldb-aarch64-windows\build\bin\clang.exe-aarch64) :: test_jump_offset_dwo (TestThreadJump.ThreadJumpTestCase.test_jump_offset_dwo) (test case does not fall in any category of interest for this run) 

======================================================================

FAIL: test_dwarf (TestThreadJump.ThreadJumpTestCase.test_dwarf)


@llvm-ci

llvm-ci commented Jun 3, 2026

Copy link
Copy Markdown

LLVM Buildbot has detected a new failure on builder clang-s390x-linux-lnt running on systemz-1 while building llvm at step 7 "ninja check 1".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/136/builds/7724

Here is the relevant piece of the build log for the reference
Step 7 (ninja check 1) failure: stage 1 checked (failure)
******************** TEST 'libFuzzer-s390x-default-Linux :: fuzzer-timeout.test' FAILED ********************
Exit Code: 1

Command Output (stderr):
--
/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang    -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta   --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer  /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest # RUN: at line 1
+ /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest
/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang    -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta   --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer  /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutEmptyTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutEmptyTest # RUN: at line 2
+ /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/clang -Wthread-safety -Wthread-safety-reference -Wthread-safety-beta --driver-mode=g++ -O2 -gline-tables-only -fsanitize=address,fuzzer -I/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/TimeoutEmptyTest.cpp -o /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutEmptyTest
not  /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1 2>&1 | FileCheck /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test --check-prefix=TimeoutTest # RUN: at line 3
+ not /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1
+ FileCheck /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test --check-prefix=TimeoutTest
not  /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1 /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/hi.txt 2>&1 | FileCheck /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test --check-prefix=SingleInputTimeoutTest # RUN: at line 12
+ not /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1 /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/hi.txt
+ FileCheck /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/test/fuzzer/fuzzer-timeout.test --check-prefix=SingleInputTimeoutTest
/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1 -timeout_exitcode=0 # RUN: at line 16
+ /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/runtimes/runtimes-bins/compiler-rt/test/fuzzer/S390XDefaultLinuxConfig/Output/fuzzer-timeout.test.tmp-TimeoutTest -timeout=1 -timeout_exitcode=0
INFO: Running with entropic power schedule (0xFF, 100).
INFO: Seed: 271868337
INFO: Loaded 1 modules   (13 inline 8-bit counters): 13 [0x2aa05254e70, 0x2aa05254e7d), 
INFO: Loaded 1 PC tables (13 PCs): 13 [0x2aa05254e80,0x2aa05254f50), 
INFO: -max_len is not provided; libFuzzer will not generate inputs larger than 4096 bytes
INFO: A corpus is not provided, starting from an empty corpus
#2	INITED cov: 2 ft: 2 corp: 1/1b exec/s: 0 rss: 31Mb
#419	NEW    cov: 3 ft: 3 corp: 2/2b lim: 8 exec/s: 0 rss: 31Mb L: 1/1 MS: 2 ChangeBit-ChangeBit-
#430	NEW    cov: 4 ft: 4 corp: 3/4b lim: 8 exec/s: 0 rss: 32Mb L: 2/2 MS: 1 CopyPart-
#5971	NEW    cov: 5 ft: 5 corp: 4/52b lim: 58 exec/s: 0 rss: 32Mb L: 48/48 MS: 1 InsertRepeatedBytes-
#6035	REDUCE cov: 5 ft: 5 corp: 4/29b lim: 58 exec/s: 0 rss: 32Mb L: 25/25 MS: 4 InsertByte-InsertByte-ChangeByte-EraseBytes-
#6096	REDUCE cov: 5 ft: 5 corp: 4/25b lim: 58 exec/s: 0 rss: 32Mb L: 21/21 MS: 1 EraseBytes-
#6151	REDUCE cov: 5 ft: 5 corp: 4/18b lim: 58 exec/s: 0 rss: 32Mb L: 14/14 MS: 5 ChangeBinInt-InsertByte-CMP-CopyPart-EraseBytes- DE: "\035\000\000\000\000\000\000\000"-
#6257	REDUCE cov: 5 ft: 5 corp: 4/13b lim: 58 exec/s: 0 rss: 32Mb L: 9/9 MS: 1 EraseBytes-
#6353	REDUCE cov: 5 ft: 5 corp: 4/12b lim: 58 exec/s: 0 rss: 32Mb L: 8/8 MS: 1 EraseBytes-
#6390	REDUCE cov: 5 ft: 5 corp: 4/9b lim: 58 exec/s: 0 rss: 32Mb L: 5/5 MS: 2 CrossOver-EraseBytes-
#6401	REDUCE cov: 5 ft: 5 corp: 4/8b lim: 58 exec/s: 0 rss: 32Mb L: 4/4 MS: 1 EraseBytes-
#6795	REDUCE cov: 5 ft: 5 corp: 4/7b lim: 58 exec/s: 0 rss: 32Mb L: 3/3 MS: 4 ChangeBinInt-InsertByte-ShuffleBytes-EraseBytes-
#7406	REDUCE cov: 6 ft: 6 corp: 5/9b lim: 63 exec/s: 0 rss: 32Mb L: 2/3 MS: 1 EraseBytes-
ALARM: working on the last Unit for 1 seconds
       and the timeout value is 1 (use -timeout=N to change)
MS: 1 InsertByte-; base unit: 94dd9e08c129c785f7f256e82fbe0a30e6d1ae40
0x48,0x69,0x21,
Hi!
artifact_prefix='./'; Test unit written to ./timeout-c0a0ad26a634840c67a210fefdda76577b03a111
Base64: SGkh
==1017725== ERROR: libFuzzer: timeout after 1 seconds
/home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/stage1/./bin/llvm-symbolizer: error: 'linux-vdso64.so.1': No such file or directory
    #0 0x02aa051ccc25 in __sanitizer_print_stack_trace /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/asan/asan_stack.cpp:87:3
    #1 0x02aa050fa0a7 in fuzzer::PrintStackTrace() /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer/FuzzerUtil.cpp:210:5
    #2 0x02aa050d50cb in fuzzer::Fuzzer::AlarmCallback() /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer/FuzzerLoop.cpp:304:5
    #3 0x03ff7ff7e47f  (linux-vdso64.so.1+0x47f) (BuildId: a1b6aba4744d6ee54c7f0d15adfbce69f31e46e9)
    #4 0x02aa050f7aa1 in Popcountll /home/uweigand/sandbox/buildbot/clang-s390x-linux-lnt/llvm/compiler-rt/lib/fuzzer/FuzzerBuiltins.h:29:54
...

yingopq pushed a commit to yingopq/llvm-project that referenced this pull request Jun 5, 2026
…vm#200603)" (llvm#201019)

This reverts commit 4cef4ef.

There are link issues with some buildbots.
CarlosAlbertoEnciso added a commit that referenced this pull request Jul 1, 2026
llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level format.

Add support for the LLVM IR format and be able to generate logical
views. Both textual representation (.ll) and bitcode (.bc) formats
are supported.

This relands #135440,
which was:
reverted in: #199890
relanded in: #200603
reverted in: #201019

It includes the fixes for the buildbots problems.
llvm-sync Bot pushed a commit to arm/arm-toolchain that referenced this pull request Jul 1, 2026
…(#202120)

llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level format.

Add support for the LLVM IR format and be able to generate logical
views. Both textual representation (.ll) and bitcode (.bc) formats
are supported.

This relands llvm/llvm-project#135440,
which was:
reverted in: llvm/llvm-project#199890
relanded in: llvm/llvm-project#200603
reverted in: llvm/llvm-project#201019

It includes the fixes for the buildbots problems.
llvm-upstreamsync Bot pushed a commit to qualcomm/cpullvm-toolchain that referenced this pull request Jul 1, 2026
…(#202120)

llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level format.

Add support for the LLVM IR format and be able to generate logical
views. Both textual representation (.ll) and bitcode (.bc) formats
are supported.

This relands llvm/llvm-project#135440,
which was:
reverted in: llvm/llvm-project#199890
relanded in: llvm/llvm-project#200603
reverted in: llvm/llvm-project#201019

It includes the fixes for the buildbots problems.
llvm-upstream-sync Bot pushed a commit to sriyalamar/cpullvm-toolchain that referenced this pull request Jul 1, 2026
…(#202120)

llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level format.

Add support for the LLVM IR format and be able to generate logical
views. Both textual representation (.ll) and bitcode (.bc) formats
are supported.

This relands llvm/llvm-project#135440,
which was:
reverted in: llvm/llvm-project#199890
relanded in: llvm/llvm-project#200603
reverted in: llvm/llvm-project#201019

It includes the fixes for the buildbots problems.
maarcosrmz pushed a commit to maarcosrmz/llvm-project that referenced this pull request Jul 1, 2026
llvm-debuginfo-analyzer is a command line tool that processes debug
info contained in a binary file and produces a debug information
format agnostic “Logical View”, which is a high-level semantic
representation of the debug info, independent of the low-level format.

Add support for the LLVM IR format and be able to generate logical
views. Both textual representation (.ll) and bitcode (.bc) formats
are supported.

This relands llvm#135440,
which was:
reverted in: llvm#199890
relanded in: llvm#200603
reverted in: llvm#201019

It includes the fixes for the buildbots problems.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants