[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