[llvm] [CodeGen][NPM] Update BranchFolderLegacy make tail merge configurable via flag (PR #135277)

Akshat Oke via llvm-commits llvm-commits at lists.llvm.org
Sun Apr 13 22:51:52 PDT 2025


================
@@ -152,7 +162,8 @@ bool BranchFolderLegacy::runOnMachineFunction(MachineFunction &MF) {
   // TailMerge can create jump into if branches that make CFG irreducible for
   // HW that requires structurized CFG.
   bool EnableTailMerge = !MF.getTarget().requiresStructuredCFG() &&
-                         PassConfig->getEnableTailMerge();
+                         PassConfig->getEnableTailMerge() &&
----------------
optimisan wrote:

I see, so we want to preserve the disabling functionality of the default-added pass and also add another instance of the pass independent of the targetpassconfig option.

To follow through this patch, we can change the `addPass` method to handle pass pointers also:
```diff cpp
- AnalysisID TargetPassConfig::addPass(AnalysisID PassID) {
+ AnalysisID TargetPassConfig::addPass(IdentifyingPassPtr PassPtr) {
+  AnalysisID PassID = PassPtr.isInstance()
+                          ? PassID = PassPtr.getInstance()->getPassID()
+                          : PassPtr.getID();
  IdentifyingPassPtr TargetID = getPassSubstitution(PassID);
  IdentifyingPassPtr FinalPtr = overridePass(PassID, TargetID);
 ...
```
And add the pass in TargetPassConfig:
```diff
- addPass(&BranchFolderPassID);
+ addPass(IdentifyingPassPtr(createBranchFolderPass(getEnableTailMerge())));
```


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


More information about the llvm-commits mailing list