[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