[llvm] [CodeGen][NewPM] Port cfi-fixup to new pass manager (PR #203692)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jun 14 05:32:05 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-backend-aarch64
Author: paperchalice
<details>
<summary>Changes</summary>
Standard work for `cfi-fixup`.
---
Full diff: https://github.com/llvm/llvm-project/pull/203692.diff
7 Files Affected:
- (modified) llvm/include/llvm/CodeGen/CFIFixup.h (+7)
- (modified) llvm/include/llvm/Passes/MachinePassRegistry.def (+1-1)
- (modified) llvm/lib/CodeGen/CFIFixup.cpp (+9-1)
- (modified) llvm/lib/Passes/PassBuilder.cpp (+1)
- (modified) llvm/test/CodeGen/AArch64/cfi-fixup-multi-block-prologue.mir (+1)
- (modified) llvm/test/CodeGen/AArch64/cfi-fixup-multi-section.mir (+1)
- (modified) llvm/test/CodeGen/AArch64/cfi-fixup.mir (+1)
``````````diff
diff --git a/llvm/include/llvm/CodeGen/CFIFixup.h b/llvm/include/llvm/CodeGen/CFIFixup.h
index 5b425b8574771..d394bdf6bcc90 100644
--- a/llvm/include/llvm/CodeGen/CFIFixup.h
+++ b/llvm/include/llvm/CodeGen/CFIFixup.h
@@ -15,6 +15,7 @@
#define LLVM_CODEGEN_CFIFIXUP_H
#include "llvm/CodeGen/MachineFunctionPass.h"
+#include "llvm/CodeGen/MachinePassManager.h"
#include "llvm/InitializePasses.h"
namespace llvm {
@@ -31,6 +32,12 @@ class LLVM_ABI CFIFixup : public MachineFunctionPass {
bool runOnMachineFunction(MachineFunction &MF) override;
};
+
+class LLVM_ABI CFIFixupPass : public PassInfoMixin<CFIFixupPass> {
+public:
+ PreservedAnalyses run(MachineFunction &MF,
+ MachineFunctionAnalysisManager &MFAM);
+};
} // namespace llvm
#endif // LLVM_CODEGEN_CFIFIXUP_H
diff --git a/llvm/include/llvm/Passes/MachinePassRegistry.def b/llvm/include/llvm/Passes/MachinePassRegistry.def
index a297c08fac1b2..46b268f328780 100644
--- a/llvm/include/llvm/Passes/MachinePassRegistry.def
+++ b/llvm/include/llvm/Passes/MachinePassRegistry.def
@@ -109,6 +109,7 @@ MACHINE_FUNCTION_ANALYSIS("virtregmap", VirtRegMapAnalysis())
MACHINE_FUNCTION_PASS("block-placement-stats", MachineBlockPlacementStatsPass())
MACHINE_FUNCTION_PASS("branch-relaxation", BranchRelaxationPass())
MACHINE_FUNCTION_PASS("break-false-deps", BreakFalseDepsPass())
+MACHINE_FUNCTION_PASS("cfi-fixup", CFIFixupPass())
MACHINE_FUNCTION_PASS("dead-mi-elimination", DeadMachineInstructionElimPass())
MACHINE_FUNCTION_PASS("detect-dead-lanes", DetectDeadLanesPass())
MACHINE_FUNCTION_PASS("dot-machine-cfg", MachineCFGPrinterPass())
@@ -275,7 +276,6 @@ DUMMY_MACHINE_MODULE_PASS("mir-check-debugify", CheckDebugMachineModulePass)
DUMMY_MACHINE_FUNCTION_PASS("bbsections-prepare", BasicBlockSectionsPass)
DUMMY_MACHINE_FUNCTION_PASS("bbsections-profile-reader", BasicBlockSectionsProfileReaderPass)
DUMMY_MACHINE_FUNCTION_PASS("cfguard-longjmp", CFGuardLongjmpPass)
-DUMMY_MACHINE_FUNCTION_PASS("cfi-fixup", CFIFixupPass)
DUMMY_MACHINE_FUNCTION_PASS("cfi-instr-inserter", CFIInstrInserterPass)
DUMMY_MACHINE_FUNCTION_PASS("eh-cont-guard-targets", EHContGuardTargetsPass)
DUMMY_MACHINE_FUNCTION_PASS("fs-profile-loader", MIRProfileLoaderNewPass)
diff --git a/llvm/lib/CodeGen/CFIFixup.cpp b/llvm/lib/CodeGen/CFIFixup.cpp
index c538acb55049d..cd887c3e2da5b 100644
--- a/llvm/lib/CodeGen/CFIFixup.cpp
+++ b/llvm/lib/CodeGen/CFIFixup.cpp
@@ -301,7 +301,7 @@ fixupBlock(MachineBasicBlock &CurrBB, const BlockFlagsVector &BlockInfo,
return true;
}
-bool CFIFixup::runOnMachineFunction(MachineFunction &MF) {
+static bool runImpl(MachineFunction &MF) {
if (!MF.getSubtarget().getFrameLowering()->enableCFIFixup(MF))
return false;
@@ -342,3 +342,11 @@ bool CFIFixup::runOnMachineFunction(MachineFunction &MF) {
return Change;
}
+
+PreservedAnalyses CFIFixupPass::run(MachineFunction &MF,
+ MachineFunctionAnalysisManager &) {
+ runImpl(MF);
+ return PreservedAnalyses::all();
+}
+
+bool CFIFixup::runOnMachineFunction(MachineFunction &MF) { return runImpl(MF); }
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index 0f288a2124b7b..abf92ba7b018c 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -85,6 +85,7 @@
#include "llvm/CodeGen/BranchFoldingPass.h"
#include "llvm/CodeGen/BranchRelaxation.h"
#include "llvm/CodeGen/BreakFalseDeps.h"
+#include "llvm/CodeGen/CFIFixup.h"
#include "llvm/CodeGen/CodeGenPrepare.h"
#include "llvm/CodeGen/ComplexDeinterleavingPass.h"
#include "llvm/CodeGen/DeadMachineInstructionElim.h"
diff --git a/llvm/test/CodeGen/AArch64/cfi-fixup-multi-block-prologue.mir b/llvm/test/CodeGen/AArch64/cfi-fixup-multi-block-prologue.mir
index d696776f45d51..8b1bdc96dfaf4 100644
--- a/llvm/test/CodeGen/AArch64/cfi-fixup-multi-block-prologue.mir
+++ b/llvm/test/CodeGen/AArch64/cfi-fixup-multi-block-prologue.mir
@@ -1,5 +1,6 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 3
# RUN: llc -run-pass=cfi-fixup %s -o - | FileCheck %s
+# RUN: llc -p cfi-fixup %s -o - | FileCheck %s
--- |
source_filename = "cfi-fixup.ll"
target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
diff --git a/llvm/test/CodeGen/AArch64/cfi-fixup-multi-section.mir b/llvm/test/CodeGen/AArch64/cfi-fixup-multi-section.mir
index 47ede6af42113..b621f89075aa3 100644
--- a/llvm/test/CodeGen/AArch64/cfi-fixup-multi-section.mir
+++ b/llvm/test/CodeGen/AArch64/cfi-fixup-multi-section.mir
@@ -1,5 +1,6 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64 -run-pass=cfi-fixup %s -o - | FileCheck %s
+# RUN: llc -mtriple=aarch64 -p cfi-fixup %s -o - | FileCheck %s
--- |
define i32 @f0(i32 %x) #0 {
entry: br label %return
diff --git a/llvm/test/CodeGen/AArch64/cfi-fixup.mir b/llvm/test/CodeGen/AArch64/cfi-fixup.mir
index b4df731fb266b..0fc333bc4b00d 100644
--- a/llvm/test/CodeGen/AArch64/cfi-fixup.mir
+++ b/llvm/test/CodeGen/AArch64/cfi-fixup.mir
@@ -1,5 +1,6 @@
# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
# RUN: llc -mtriple=aarch64 -run-pass=cfi-fixup %s -o - | FileCheck %s
+# RUN: llc -mtriple=aarch64 -p cfi-fixup %s -o - | FileCheck %s
--- |
define i32 @f0(i32 %x) #0 {
entry: br label %return
``````````
</details>
https://github.com/llvm/llvm-project/pull/203692
More information about the llvm-commits
mailing list