[llvm] [BOLT][AArch64] Refuse to run RegReAssign pass (PR #194866)

via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 29 07:01:02 PDT 2026


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-bolt

Author: Amina Chabane (Amichaxx)

<details>
<summary>Changes</summary>

RegReAssign hits an unreachable on AArch64 as it is a pass (conceptually) specific to X86.

- Add a guard to RegReAssign for non-X86
- Update unsupported-passes.test

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


2 Files Affected:

- (modified) bolt/lib/Passes/RegReAssign.cpp (+5) 
- (modified) bolt/test/AArch64/unsupported-passes.test (+2) 


``````````diff
diff --git a/bolt/lib/Passes/RegReAssign.cpp b/bolt/lib/Passes/RegReAssign.cpp
index 54eff51bfee68..85c01ee6e2558 100644
--- a/bolt/lib/Passes/RegReAssign.cpp
+++ b/bolt/lib/Passes/RegReAssign.cpp
@@ -449,6 +449,11 @@ void RegReAssign::setupConservativePass(
 }
 
 Error RegReAssign::runOnFunctions(BinaryContext &BC) {
+  if (!BC.isX86()) {
+    BC.errs() << "BOLT-ERROR: " << getName() << " is supported only on X86\n";
+    exit(1);
+  }
+
   RegScore = std::vector<int64_t>(BC.MRI->getNumRegs(), 0);
   RankedRegs = std::vector<size_t>(BC.MRI->getNumRegs(), 0);
 
diff --git a/bolt/test/AArch64/unsupported-passes.test b/bolt/test/AArch64/unsupported-passes.test
index 58dcb89e6596f..aba9a9e2ac0a9 100644
--- a/bolt/test/AArch64/unsupported-passes.test
+++ b/bolt/test/AArch64/unsupported-passes.test
@@ -15,7 +15,9 @@ CHECK-INDIRECT-CALL-PROMOTION: BOLT-ERROR: indirect-call-promotion is supported
 
 // Passes specific to X86 arch
 RUN: not llvm-bolt %t -o %t.bolt --cmov-conversion 2>&1 | FileCheck %s --check-prefix=CHECK-CMOV-CONV
+RUN: not llvm-bolt %t -o %t.bolt --reg-reassign 2>&1 | FileCheck %s --check-prefix=CHECK-REG-REASSIGN
 CHECK-CMOV-CONV: BOLT-ERROR: CMOV conversion is supported only on X86
+CHECK-REG-REASSIGN: BOLT-ERROR: regreassign is supported only on X86
 
 RUN: not llvm-bolt %t -o %t.bolt split-functions --split-strategy=cdsplit 2>&1 | FileCheck %s --check-prefix=CHECK-CDSPLIT
 CHECK-CDSPLIT: BOLT-ERROR: CDSplit is not supported with LongJmp. Try with '--compact-code-model'

``````````

</details>


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


More information about the llvm-commits mailing list