Index: lib/Passes/PassBuilder.cpp =================================================================== --- lib/Passes/PassBuilder.cpp +++ lib/Passes/PassBuilder.cpp @@ -505,6 +505,10 @@ // the CGSCC pipeline. MPM.addPass(RequireAnalysisPass()); + // Require the ProfileSummaryAnalysis for the module so we can query it within + // the inliner pass. + MPM.addPass(RequireAnalysisPass()); + // Now begin the main postorder CGSCC pipeline. // FIXME: The current CGSCC pipeline has its origins in the legacy pass // manager and trying to emulate its precise behavior. Much of this doesn't Index: test/Other/new-pm-defaults.ll =================================================================== --- test/Other/new-pm-defaults.ll +++ test/Other/new-pm-defaults.ll @@ -57,6 +57,8 @@ ; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA ; CHECK-O-NEXT: Running analysis: GlobalsAA ; CHECK-O-NEXT: Running analysis: CallGraphAnalysis +; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis +; CHECK-O-NEXT: Running analysis: ProfileSummaryAnalysis ; CHECK-O-NEXT: Running pass: ModuleToPostOrderCGSCCPassAdaptor<{{.*}}LazyCallGraph{{.*}}> ; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy ; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis Index: test/Transforms/Inline/inline-hot-callsite.ll =================================================================== --- test/Transforms/Inline/inline-hot-callsite.ll +++ test/Transforms/Inline/inline-hot-callsite.ll @@ -1,16 +1,21 @@ -; RUN: opt < %s -inline -inline-threshold=0 -hot-callsite-threshold=100 -S | FileCheck %s -; RUN: opt < %s -passes='require,cgscc(inline)' -inline-threshold=0 -hot-callsite-threshold=100 -S | FileCheck %s - ; This tests that a hot callsite gets the (higher) inlinehint-threshold even without ; without inline hints and gets inlined because the cost is less than ; inlinehint-threshold. A cold callee with identical body does not get inlined because ; cost exceeds the inline-threshold +; RUN: opt < %s -inline -inline-threshold=0 -hot-callsite-threshold=100 -S | FileCheck %s +; RUN: opt < %s -passes='require,cgscc(inline)' -inline-threshold=0 -hot-callsite-threshold=100 -S | FileCheck %s + +; Run this with the default O2 pipeline to test that profile summary analysis +; is available during inlining. +; RUN: opt < %s -passes='default' -inline-threshold=0 -hot-callsite-threshold=100 -S | FileCheck %s + define i32 @callee1(i32 %x) { %x1 = add i32 %x, 1 %x2 = add i32 %x1, 1 %x3 = add i32 %x2, 1 call void @extern() + call void @extern() ret i32 %x3 } @@ -20,6 +25,7 @@ %x2 = add i32 %x1, 1 %x3 = add i32 %x2, 1 call void @extern() + call void @extern() ret i32 %x3 }