[llvm] [BOLT] Fix unrecognized option values for print-sorted-by-order (PR #155613)

Haibo Jiang via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 9 00:08:45 PDT 2025


https://github.com/Jianghibo updated https://github.com/llvm/llvm-project/pull/155613

>From 3da659bf13faa08b04c3ce861c2253fe133d5887 Mon Sep 17 00:00:00 2001
From: jianghaibo <jianghaibo9 at huawei.com>
Date: Wed, 27 Aug 2025 20:32:57 +0800
Subject: [PATCH] [BOLT] Fix unrecognized option values for
 print-sorted-by-order

---
 bolt/lib/Passes/BinaryPasses.cpp              |  7 ++++-
 .../Inputs/print-sorted-by-order.fdata        |  1 +
 bolt/test/AArch64/print-sorted-by-order.s     | 28 +++++++++++++++++++
 3 files changed, 35 insertions(+), 1 deletion(-)
 create mode 100644 bolt/test/AArch64/Inputs/print-sorted-by-order.fdata
 create mode 100644 bolt/test/AArch64/print-sorted-by-order.s

diff --git a/bolt/lib/Passes/BinaryPasses.cpp b/bolt/lib/Passes/BinaryPasses.cpp
index d7f02b9470030..4750093d3bac4 100644
--- a/bolt/lib/Passes/BinaryPasses.cpp
+++ b/bolt/lib/Passes/BinaryPasses.cpp
@@ -60,7 +60,12 @@ static cl::opt<DynoStatsSortOrder> DynoStatsSortOrderOpt(
     "print-sorted-by-order",
     cl::desc("use ascending or descending order when printing functions "
              "ordered by dyno stats"),
-    cl::init(DynoStatsSortOrder::Descending), cl::cat(BoltOptCategory));
+    cl::init(DynoStatsSortOrder::Descending),
+    cl::values(clEnumValN(DynoStatsSortOrder::Ascending, "ascending",
+                          "Ascending order"),
+               clEnumValN(DynoStatsSortOrder::Descending, "descending",
+                          "Descending order")),
+    cl::cat(BoltOptCategory));
 
 cl::list<std::string>
 HotTextMoveSections("hot-text-move-sections",
diff --git a/bolt/test/AArch64/Inputs/print-sorted-by-order.fdata b/bolt/test/AArch64/Inputs/print-sorted-by-order.fdata
new file mode 100644
index 0000000000000..86faa750a0312
--- /dev/null
+++ b/bolt/test/AArch64/Inputs/print-sorted-by-order.fdata
@@ -0,0 +1 @@
+1 foo 0 1 bar 0 0 1
diff --git a/bolt/test/AArch64/print-sorted-by-order.s b/bolt/test/AArch64/print-sorted-by-order.s
new file mode 100644
index 0000000000000..434df90271704
--- /dev/null
+++ b/bolt/test/AArch64/print-sorted-by-order.s
@@ -0,0 +1,28 @@
+# Check that --print-sorted-by-order=<ascending/descending> option works properly in llvm-bolt
+#
+# RUN: %clang %cflags -fPIC -pie %s -o %t.exe -nostdlib -Wl,-q
+# RUN: llvm-bolt %t.exe -o %t.bolt --print-sorted-by=all --print-sorted-by-order=ascending \
+# RUN:   --data %S/Inputs/print-sorted-by-order.fdata | FileCheck %s -check-prefix=CHECK-ASCEND
+# RUN: llvm-bolt %t.exe -o %t.bolt --print-sorted-by=all --print-sorted-by-order=descending \
+# RUN:   --data %S/Inputs/print-sorted-by-order.fdata | FileCheck %s -check-prefix=CHECK-DESCEND
+
+# CHECK-ASCEND: BOLT-INFO: top functions sorted by dyno stats are:
+# CHECK-ASCEND-NEXT: bar
+# CHECK-ASCEND-NEXT: foo
+# CHECK-DESCEND: BOLT-INFO: top functions sorted by dyno stats are:
+# CHECK-DESCEND-NEXT: foo
+# CHECK-DESCEND-NEXT: bar
+
+  .text
+  .align 4
+  .global bar
+  .type bar, %function
+bar:
+  mov w0, wzr
+  ret
+
+  .global foo
+  .type foo, %function
+foo:
+  bl bar
+  ret



More information about the llvm-commits mailing list