diff --git a/llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h b/llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h --- a/llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h +++ b/llvm/include/llvm/Transforms/Scalar/LoopUnrollPass.h @@ -44,6 +44,7 @@ PreservedAnalyses run(Loop &L, LoopAnalysisManager &AM, LoopStandardAnalysisResults &AR, LPMUpdater &U); + static bool isRequired() { return true; } }; /// A set of parameters used to control various transforms performed by the diff --git a/llvm/include/llvm/Transforms/Utils/LCSSA.h b/llvm/include/llvm/Transforms/Utils/LCSSA.h --- a/llvm/include/llvm/Transforms/Utils/LCSSA.h +++ b/llvm/include/llvm/Transforms/Utils/LCSSA.h @@ -37,6 +37,7 @@ class LCSSAPass : public PassInfoMixin { public: PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); + static bool isRequired() { return true; } }; } // end namespace llvm diff --git a/llvm/include/llvm/Transforms/Utils/LoopSimplify.h b/llvm/include/llvm/Transforms/Utils/LoopSimplify.h --- a/llvm/include/llvm/Transforms/Utils/LoopSimplify.h +++ b/llvm/include/llvm/Transforms/Utils/LoopSimplify.h @@ -53,6 +53,7 @@ class LoopSimplifyPass : public PassInfoMixin { public: PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); + static bool isRequired() { return true; } }; /// Simplify each loop in a loop nest recursively. diff --git a/llvm/test/Feature/optnone-opt.ll b/llvm/test/Feature/optnone-opt.ll --- a/llvm/test/Feature/optnone-opt.ll +++ b/llvm/test/Feature/optnone-opt.ll @@ -82,11 +82,9 @@ ; LOOP-DAG: Skipping pass 'Unswitch loops' ; LoopPassManager should not be skipped over an optnone function ; NPM-LOOP-NOT: Skipping pass: PassManager -; NPM-LOOP-DAG: Skipping pass: LoopSimplifyPass on {{.*}}foo -; NPM-LOOP-DAG: Skipping pass: LCSSAPass ; NPM-LOOP-DAG: Skipping pass: IndVarSimplifyPass ; NPM-LOOP-DAG: Skipping pass: SimpleLoopUnswitchPass -; NPM-LOOP-DAG: Skipping pass: LoopUnrollPass +; NPM-LOOP-DAG: Skipping pass: LoopUnrollPass on {{.*}}foo ; NPM-LOOP-DAG: Skipping pass: LoopStrengthReducePass ; NPM-LOOP-DAG: Skipping pass: LoopDeletionPass ; NPM-LOOP-DAG: Skipping pass: LICMPass diff --git a/llvm/test/Transforms/LoopUnroll/FullUnroll.ll b/llvm/test/Transforms/LoopUnroll/FullUnroll.ll --- a/llvm/test/Transforms/LoopUnroll/FullUnroll.ll +++ b/llvm/test/Transforms/LoopUnroll/FullUnroll.ll @@ -1,4 +1,5 @@ ; RUN: opt -passes='loop-unroll-full' -disable-verify --mtriple x86_64-pc-linux-gnu -S -o - %s | FileCheck %s +; RUN: opt -enable-npm-optnone -passes='loop-unroll-full' -disable-verify --mtriple x86_64-pc-linux-gnu -S -o - %s | FileCheck %s ; This checks that the loop full unroller will fire in the new pass manager ; when forced via #pragma in the source (or annotation in the code).