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= - Redirect output to the specified file. HELP-ALL: --output-folder= - Folder name for view splitting. HELP-ALL: --output-level= - Only print to a depth of N elements. HELP-ALL: --output-sort= - 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 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.")),