[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