[llvm] [AArch64] Don't run loop-idiom-vectorize pass in the O0 pipeline (PR #156802)

David Sherwood via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 4 01:36:19 PDT 2025


================
@@ -589,7 +589,8 @@ void AArch64TargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
 
   PB.registerLateLoopOptimizationsEPCallback(
       [=](LoopPassManager &LPM, OptimizationLevel Level) {
-        LPM.addPass(LoopIdiomVectorizePass());
+        if (Level != OptimizationLevel::O0)
+          LPM.addPass(LoopIdiomVectorizePass());
----------------
david-arm wrote:

Looks like these are invoked from `buildO0DefaultPipeline` which is strange, but then we also call `invokeCGSCCOptimizerLateEPCallbacks`, `invokeLoopOptimizerEndEPCallbacks` and `invokeScalarOptimizerLateEPCallbacks` from there too.

Perhaps better to guard the entire register function with the check, i.e.

```
  if (Level != OptimizationLevel::O0) {
    PB.registerLateLoopOptimizationsEPCallback(
        [=](LoopPassManager &LPM, OptimizationLevel Level) {
          LPM.addPass(LoopIdiomVectorizePass());
        });
  }
```

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


More information about the llvm-commits mailing list