[llvm] [NewPM] Port EHContGuardTargets to the new pass manager (PR #217843)
Bill Wendling via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 21 16:51:30 PDT 2026
================
@@ -29,53 +30,63 @@ using namespace llvm;
STATISTIC(EHContGuardTargetsFound, "Number of EHCont Guard targets");
+static bool runEHContGuardTargets(MachineFunction &MF) {
+ // Skip modules for which the ehcontguard flag is not set.
+ if (!MF.getFunction().getParent()->getModuleFlag("ehcontguard"))
+ return false;
+
+ // Skip functions that do not have targets
+ if (!MF.hasEHContTarget())
+ return false;
+
+ bool Result = false;
+
+ for (MachineBasicBlock &MBB : MF) {
+ if (MBB.isEHContTarget()) {
+ MF.addEHContTarget(MBB.getEHContSymbol());
+ EHContGuardTargetsFound++;
+ Result = true;
+ }
+ }
+
+ return Result;
+}
+
namespace {
/// MachineFunction pass to insert a symbol before each valid catchret target
/// and store these in the MachineFunction's CatchRetTargets vector.
-class EHContGuardTargets : public MachineFunctionPass {
+class EHContGuardTargetsLegacy : public MachineFunctionPass {
public:
static char ID;
- EHContGuardTargets() : MachineFunctionPass(ID) {}
+ EHContGuardTargetsLegacy() : MachineFunctionPass(ID) {}
StringRef getPassName() const override {
return "EH Cont Guard catchret targets";
}
- bool runOnMachineFunction(MachineFunction &MF) override;
+ bool runOnMachineFunction(MachineFunction &MF) override {
+ return runEHContGuardTargets(MF);
+ }
};
} // end anonymous namespace
-char EHContGuardTargets::ID = 0;
+char EHContGuardTargetsLegacy::ID = 0;
-INITIALIZE_PASS(EHContGuardTargets, "EHContGuardTargets",
+INITIALIZE_PASS(EHContGuardTargetsLegacy, "EHContGuardTargets",
"Insert symbols at valid targets for /guard:ehcont", false,
false)
-FunctionPass *llvm::createEHContGuardTargetsPass() {
- return new EHContGuardTargets();
+FunctionPass *llvm::createEHContGuardTargetsLegacy() {
+ return new EHContGuardTargetsLegacy();
}
-bool EHContGuardTargets::runOnMachineFunction(MachineFunction &MF) {
-
- // Skip modules for which the ehcontguard flag is not set.
- if (!MF.getFunction().getParent()->getModuleFlag("ehcontguard"))
- return false;
-
- // Skip functions that do not have targets
- if (!MF.hasEHContTarget())
- return false;
-
- bool Result = false;
-
- for (MachineBasicBlock &MBB : MF) {
- if (MBB.isEHContTarget()) {
- MF.addEHContTarget(MBB.getEHContSymbol());
- EHContGuardTargetsFound++;
- Result = true;
- }
- }
+PreservedAnalyses
+EHContGuardTargetsPass::run(MachineFunction &MF,
+ MachineFunctionAnalysisManager &MFAM) {
+ if (!runEHContGuardTargets(MF))
+ return PreservedAnalyses::all();
- return Result;
+ return getMachineFunctionPassPreservedAnalyses();
----------------
isanbard wrote:
Done.
https://github.com/llvm/llvm-project/pull/217843
More information about the llvm-commits
mailing list