[llvm] [BOLT][AArch64] Refuse to run FrameOptimizer pass (PR #152309)

via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 7 23:58:52 PDT 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-bolt

Author: Paschalis Mpeis (paschalis-mpeis)

<details>
<summary>Changes</summary>

FrameOptimizer pass runs by default on all targets, however, it defaults to --frame-opt=none. This patch prevents the pass from running on non-x86 targets when any other value (hot, full) is specified.

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


2 Files Affected:

- (modified) bolt/lib/Passes/FrameOptimizer.cpp (+5) 
- (added) bolt/test/AArch64/unsupported-passes.test (+8) 


``````````diff
diff --git a/bolt/lib/Passes/FrameOptimizer.cpp b/bolt/lib/Passes/FrameOptimizer.cpp
index 81d4d9367f58c..bafa10ec2e233 100644
--- a/bolt/lib/Passes/FrameOptimizer.cpp
+++ b/bolt/lib/Passes/FrameOptimizer.cpp
@@ -224,6 +224,11 @@ Error FrameOptimizerPass::runOnFunctions(BinaryContext &BC) {
   if (opts::FrameOptimization == FOP_NONE)
     return Error::success();
 
+  if (!BC.isX86()) {
+    BC.errs() << "BOLT-ERROR: " << getName() << " is supported only on X86.\n";
+    exit(1);
+  }
+
   std::unique_ptr<BinaryFunctionCallGraph> CG;
   std::unique_ptr<FrameAnalysis> FA;
   std::unique_ptr<RegAnalysis> RA;
diff --git a/bolt/test/AArch64/unsupported-passes.test b/bolt/test/AArch64/unsupported-passes.test
new file mode 100644
index 0000000000000..2b96dae6ac1e3
--- /dev/null
+++ b/bolt/test/AArch64/unsupported-passes.test
@@ -0,0 +1,8 @@
+// Checks that non-fully supported passes on AArch64 are handled appropriately.
+
+// REQUIRES: system-linux,asserts,target=aarch64{{.*}}
+
+RUN: %clang %cflags %p/../Inputs/hello.c -o %t -Wl,-q
+RUN: not llvm-bolt %t -o %t.bolt --frame-opt=all 2>&1 | FileCheck %s
+
+CHECK: BOLT-ERROR: frame-optimizer is supported only on X86.

``````````

</details>


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


More information about the llvm-commits mailing list