[llvm] [BOLT][AArch64] Refuse to run FrameOptimizer pass (PR #152309)
Paschalis Mpeis via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 6 06:55:36 PDT 2025
https://github.com/paschalis-mpeis created https://github.com/llvm/llvm-project/pull/152309
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.
>From aa0b618fc3d527ae80b99d4ddaa46ea6d37d1671 Mon Sep 17 00:00:00 2001
From: Paschalis Mpeis <Paschalis.Mpeis at arm.com>
Date: Wed, 6 Aug 2025 14:53:34 +0100
Subject: [PATCH] [BOLT][AArch64] Refuse to run FrameOptimizer pass
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.
---
bolt/lib/Passes/FrameOptimizer.cpp | 5 +++++
bolt/test/AArch64/unsupported-passes.test | 8 ++++++++
2 files changed, 13 insertions(+)
create mode 100644 bolt/test/AArch64/unsupported-passes.test
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.
More information about the llvm-commits
mailing list