Index: lib/Passes/PassBuilder.cpp =================================================================== --- lib/Passes/PassBuilder.cpp +++ lib/Passes/PassBuilder.cpp @@ -362,6 +362,9 @@ invokePeepholeEPCallbacks(FPM, Level); + if (!isOptimizingForSize(Level)) + FPM.addPass(PGOMemOPSizeOpt()); + FPM.addPass(TailCallElimPass()); FPM.addPass(SimplifyCFGPass()); Index: test/Other/new-pm-defaults.ll =================================================================== --- test/Other/new-pm-defaults.ll +++ test/Other/new-pm-defaults.ll @@ -118,12 +118,25 @@ ; CHECK-O2-NEXT: Running pass: LibCallsShrinkWrapPass ; CHECK-O3-NEXT: Running pass: LibCallsShrinkWrapPass ; CHECK-EP-PEEPHOLE-NEXT: Running pass: NoOpFunctionPass +; CHECK-O1-NEXT: Running pass: PGOMemOPSizeOpt +; CHECK-O2-NEXT: Running pass: PGOMemOPSizeOpt +; CHECK-O3-NEXT: Running pass: PGOMemOPSizeOpt +; CHECK-O1-NEXT: Running analysis: BlockFrequencyAnalysis +; CHECK-O1-NEXT: Running analysis: LoopAnalysis +; CHECK-O1-NEXT: Running analysis: BranchProbabilityAnalysis +; CHECK-O2-NEXT: Running analysis: BlockFrequencyAnalysis +; CHECK-O2-NEXT: Running analysis: LoopAnalysis +; CHECK-O2-NEXT: Running analysis: BranchProbabilityAnalysis +; CHECK-O3-NEXT: Running analysis: BlockFrequencyAnalysis +; CHECK-O3-NEXT: Running analysis: LoopAnalysis +; CHECK-O3-NEXT: Running analysis: BranchProbabilityAnalysis ; CHECK-O-NEXT: Running pass: TailCallElimPass ; CHECK-O-NEXT: Running pass: SimplifyCFGPass ; CHECK-O-NEXT: Running pass: ReassociatePass ; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}OptimizationRemarkEmitterAnalysis ; CHECK-O-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}LoopStandardAnalysisResults{{.*}}> -; CHECK-O-NEXT: Running analysis: LoopAnalysis +; CHECK-Oz-NEXT: Running analysis: LoopAnalysis +; CHECK-Os-NEXT: Running analysis: LoopAnalysis ; CHECK-O-NEXT: Running analysis: ScalarEvolutionAnalysis ; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy ; CHECK-O-NEXT: Starting Loop pass manager run. @@ -190,8 +203,10 @@ ; CHECK-O-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}LoopRotatePass ; CHECK-O-NEXT: Running pass: LoopDistributePass ; CHECK-O-NEXT: Running pass: LoopVectorizePass -; CHECK-O-NEXT: Running analysis: BlockFrequencyAnalysis -; CHECK-O-NEXT: Running analysis: BranchProbabilityAnalysis +; CHECK-Os-NEXT: Running analysis: BlockFrequencyAnalysis +; CHECK-Os-NEXT: Running analysis: BranchProbabilityAnalysis +; CHECK-Oz-NEXT: Running analysis: BlockFrequencyAnalysis +; CHECK-Oz-NEXT: Running analysis: BranchProbabilityAnalysis ; CHECK-O-NEXT: Running pass: LoopLoadEliminationPass ; CHECK-O-NEXT: Running analysis: LoopAccessAnalysis ; CHECK-O-NEXT: Running pass: InstCombinePass Index: test/Other/new-pm-thinlto-defaults.ll =================================================================== --- test/Other/new-pm-thinlto-defaults.ll +++ test/Other/new-pm-thinlto-defaults.ll @@ -112,12 +112,25 @@ ; CHECK-O1-NEXT: Running pass: LibCallsShrinkWrapPass ; CHECK-O2-NEXT: Running pass: LibCallsShrinkWrapPass ; CHECK-O3-NEXT: Running pass: LibCallsShrinkWrapPass +; CHECK-O1-NEXT: Running pass: PGOMemOPSizeOpt +; CHECK-O2-NEXT: Running pass: PGOMemOPSizeOpt +; CHECK-O3-NEXT: Running pass: PGOMemOPSizeOpt +; CHECK-O1-NEXT: Running analysis: BlockFrequencyAnalysis +; CHECK-O2-NEXT: Running analysis: BlockFrequencyAnalysis +; CHECK-O3-NEXT: Running analysis: BlockFrequencyAnalysis +; CHECK-O1-NEXT: Running analysis: LoopAnalysis +; CHECK-O2-NEXT: Running analysis: LoopAnalysis +; CHECK-O3-NEXT: Running analysis: LoopAnalysis +; CHECK-O1-NEXT: Running analysis: BranchProbabilityAnalysis +; CHECK-O2-NEXT: Running analysis: BranchProbabilityAnalysis +; CHECK-O3-NEXT: Running analysis: BranchProbabilityAnalysis ; CHECK-O-NEXT: Running pass: TailCallElimPass ; CHECK-O-NEXT: Running pass: SimplifyCFGPass ; CHECK-O-NEXT: Running pass: ReassociatePass ; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}OptimizationRemarkEmitterAnalysis ; CHECK-O-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}LoopStandardAnalysisResults{{.*}}> -; CHECK-O-NEXT: Running analysis: LoopAnalysis +; CHECK-Os-NEXT: Running analysis: LoopAnalysis +; CHECK-Oz-NEXT: Running analysis: LoopAnalysis ; CHECK-O-NEXT: Running analysis: ScalarEvolutionAnalysis ; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy ; CHECK-O-NEXT: Starting Loop pass manager run. @@ -178,8 +191,10 @@ ; CHECK-POSTLINK-O-NEXT: Running pass: FunctionToLoopPassAdaptor<{{.*}}LoopRotatePass ; CHECK-POSTLINK-O-NEXT: Running pass: LoopDistributePass ; CHECK-POSTLINK-O-NEXT: Running pass: LoopVectorizePass -; CHECK-POSTLINK-O-NEXT: Running analysis: BlockFrequencyAnalysis -; CHECK-POSTLINK-O-NEXT: Running analysis: BranchProbabilityAnalysis +; CHECK-POSTLINK-Os-NEXT: Running analysis: BlockFrequencyAnalysis +; CHECK-POSTLINK-Oz-NEXT: Running analysis: BlockFrequencyAnalysis +; CHECK-POSTLINK-Os-NEXT: Running analysis: BranchProbabilityAnalysis +; CHECK-POSTLINK-Oz-NEXT: Running analysis: BranchProbabilityAnalysis ; CHECK-POSTLINK-O-NEXT: Running pass: LoopLoadEliminationPass ; CHECK-POSTLINK-O-NEXT: Running analysis: LoopAccessAnalysis ; CHECK-POSTLINK-O-NEXT: Running pass: InstCombinePass