[llvm] [llvm-debuginfo-analyzer] Add `--output-sort=none` option (PR #145761)

via llvm-commits llvm-commits at lists.llvm.org
Wed Jun 25 11:35:11 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-debuginfo

Author: Javier Lopez-Gomez (jalopezg-git)

<details>
<summary>Changes</summary>

Add the `--output-sort=none` option.  Per `LVReader::sortScopes()`,
`LVScope::sort()` is called on the root scope.  `LVScope::sort()` has no
effect if `getSortFunction() == nullptr`, and thus the elements are traversed
in the order in which they were initially created.

For the available readers, this matches `--output-sort=offset`.  Tests were
updated accordingly.

---
Full diff: https://github.com/llvm/llvm-project/pull/145761.diff


5 Files Affected:

- (modified) llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst (+1) 
- (modified) llvm/test/tools/llvm-debuginfo-analyzer/COFF/01-coff-print-basic-details.test (+9) 
- (modified) llvm/test/tools/llvm-debuginfo-analyzer/DWARF/01-dwarf-print-basic-details.test (+9) 
- (modified) llvm/test/tools/llvm-debuginfo-analyzer/cmdline.test (+1) 
- (modified) llvm/tools/llvm-debuginfo-analyzer/Options.cpp (+3-1) 


``````````diff
diff --git a/llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst b/llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
index 1264f80206618..3d9b53c2c5a0d 100644
--- a/llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
+++ b/llvm/docs/CommandGuide/llvm-debuginfo-analyzer.rst
@@ -365,6 +365,7 @@ output for a single compilation unit.
 
  .. code-block:: text
 
+   =none: Unsorted output (i.e. as read from input).
    =kind: Sort by element kind.
    =line: Sort by element line number.
    =name: Sort by element name.
diff --git a/llvm/test/tools/llvm-debuginfo-analyzer/COFF/01-coff-print-basic-details.test b/llvm/test/tools/llvm-debuginfo-analyzer/COFF/01-coff-print-basic-details.test
index be2085a187eb9..763d31ec54754 100644
--- a/llvm/test/tools/llvm-debuginfo-analyzer/COFF/01-coff-print-basic-details.test
+++ b/llvm/test/tools/llvm-debuginfo-analyzer/COFF/01-coff-print-basic-details.test
@@ -24,6 +24,15 @@
 ; RUN:                         %p/Inputs/test-codeview-clang.o 2>&1 | \
 ; RUN: FileCheck --strict-whitespace -check-prefix=ONE %s
 
+; If `--output-sort=none`, LVReader::sortScopes() has no effect and elements are
+; iterated in the order in which they were added (which matches the increasing
+; offset of the reference output).
+; RUN: llvm-debuginfo-analyzer --attribute=level,format \
+; RUN:                         --output-sort=none \
+; RUN:                         --print=scopes,symbols,types,lines,instructions \
+; RUN:                         %p/Inputs/test-codeview-clang.o 2>&1 | \
+; RUN: FileCheck --strict-whitespace -check-prefix=ONE %s
+
 ; RUN: llvm-debuginfo-analyzer --attribute=level,format \
 ; RUN:                         --output-sort=offset \
 ; RUN:                         --print=elements \
diff --git a/llvm/test/tools/llvm-debuginfo-analyzer/DWARF/01-dwarf-print-basic-details.test b/llvm/test/tools/llvm-debuginfo-analyzer/DWARF/01-dwarf-print-basic-details.test
index 54dbd7466e4f6..4b17f1d6063d4 100644
--- a/llvm/test/tools/llvm-debuginfo-analyzer/DWARF/01-dwarf-print-basic-details.test
+++ b/llvm/test/tools/llvm-debuginfo-analyzer/DWARF/01-dwarf-print-basic-details.test
@@ -24,6 +24,15 @@
 ; RUN:                         %p/Inputs/test-dwarf-clang.o 2>&1 | \
 ; RUN: FileCheck --strict-whitespace -check-prefix=ONE %s
 
+; If `--output-sort=none`, LVReader::sortScopes() has no effect and elements are
+; iterated in the order in which they were added (which matches the increasing
+; offset of the reference output).
+; RUN: llvm-debuginfo-analyzer --attribute=level,format \
+; RUN:                         --output-sort=none \
+; RUN:                         --print=scopes,symbols,types,lines,instructions \
+; RUN:                         %p/Inputs/test-dwarf-clang.o 2>&1 | \
+; RUN: FileCheck --strict-whitespace -check-prefix=ONE %s
+
 ; RUN: llvm-debuginfo-analyzer --attribute=level,format \
 ; RUN:                         --output-sort=offset \
 ; RUN:                         --print=elements \
diff --git a/llvm/test/tools/llvm-debuginfo-analyzer/cmdline.test b/llvm/test/tools/llvm-debuginfo-analyzer/cmdline.test
index 7763426142476..97f0c35913830 100644
--- a/llvm/test/tools/llvm-debuginfo-analyzer/cmdline.test
+++ b/llvm/test/tools/llvm-debuginfo-analyzer/cmdline.test
@@ -110,6 +110,7 @@ HELP-ALL:   --output-file=<filename>   - Redirect output to the specified file.
 HELP-ALL:   --output-folder=<pathname> - Folder name for view splitting.
 HELP-ALL:   --output-level=<N>         - Only print to a depth of N elements.
 HELP-ALL:   --output-sort=<value>      - Primary key when ordering logical view (default: line).
+HELP-ALL:     =none                    -   Unsorted output (i.e. as read from input).
 HELP-ALL:     =kind                    -   Sort by element kind.
 HELP-ALL:     =line                    -   Sort by element line number.
 HELP-ALL:     =name                    -   Sort by element name.
diff --git a/llvm/tools/llvm-debuginfo-analyzer/Options.cpp b/llvm/tools/llvm-debuginfo-analyzer/Options.cpp
index 79e2edccc50b8..b7e337bc21c61 100644
--- a/llvm/tools/llvm-debuginfo-analyzer/Options.cpp
+++ b/llvm/tools/llvm-debuginfo-analyzer/Options.cpp
@@ -198,7 +198,9 @@ static cl::opt<LVSortMode, true> OutputSort(
     "output-sort", cl::cat(OutputCategory),
     cl::desc("Primary key when ordering logical view (default: line)."),
     cl::Hidden, cl::ZeroOrMore,
-    values(clEnumValN(LVSortMode::Kind, "kind", "Sort by element kind."),
+    values(clEnumValN(LVSortMode::None, "none",
+                      "Unsorted output (i.e. as read from input)."),
+           clEnumValN(LVSortMode::Kind, "kind", "Sort by element kind."),
            clEnumValN(LVSortMode::Line, "line", "Sort by element line number."),
            clEnumValN(LVSortMode::Name, "name", "Sort by element name."),
            clEnumValN(LVSortMode::Offset, "offset", "Sort by element offset.")),

``````````

</details>


https://github.com/llvm/llvm-project/pull/145761


More information about the llvm-commits mailing list