194 lines · plain
1; Validate ThinLTO prelink pipeline when we have Sample PGO2;3; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager \4; RUN: -pgo-kind=pgo-sample-use-pipeline -profile-file='%S/Inputs/new-pm-thinlto-samplepgo-defaults.prof' \5; RUN: -passes='thinlto-pre-link<O1>' -S %s 2>&1 \6; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O17; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager \8; RUN: -pgo-kind=pgo-sample-use-pipeline -profile-file='%S/Inputs/new-pm-thinlto-samplepgo-defaults.prof' \9; RUN: -passes='thinlto-pre-link<O2>' -S %s 2>&1 \10; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O2,CHECK-O23SZ11; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager \12; RUN: -pgo-kind=pgo-sample-use-pipeline -profile-file='%S/Inputs/new-pm-thinlto-samplepgo-defaults.prof' \13; RUN: -passes='thinlto-pre-link<O3>' -S -passes-ep-pipeline-start='no-op-module' %s 2>&1 \14; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O3,CHECK-O23SZ,CHECK-EP-PIPELINE-START15; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager \16; RUN: -pgo-kind=pgo-sample-use-pipeline -profile-file='%S/Inputs/new-pm-thinlto-samplepgo-defaults.prof' \17; RUN: -passes='thinlto-pre-link<Os>' -S %s 2>&1 \18; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O23SZ19; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager \20; RUN: -pgo-kind=pgo-sample-use-pipeline -profile-file='%S/Inputs/new-pm-thinlto-samplepgo-defaults.prof' \21; RUN: -passes='thinlto-pre-link<Oz>' -S %s 2>&1 \22; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O23SZ23; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager -debug-info-for-profiling \24; RUN: -pgo-kind=pgo-sample-use-pipeline -profile-file='%S/Inputs/new-pm-thinlto-samplepgo-defaults.prof' \25; RUN: -passes='thinlto-pre-link<O2>' -S %s 2>&1 \26; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O2,CHECK-O23SZ27;28; CHECK-O: Running pass: Annotation2Metadata29; CHECK-O-NEXT: Running pass: ForceFunctionAttrsPass30; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy31; CHECK-O-NEXT: Running pass: AddDiscriminatorsPass32; CHECK-EP-PIPELINE-START-NEXT: Running pass: NoOpModulePass33; CHECK-O-NEXT: Running pass: InferFunctionAttrsPass34; CHECK-O-NEXT: Running analysis: TargetLibraryAnalysis35; CHECK-O-NEXT: Running pass: CoroEarlyPass36; CHECK-O-NEXT: Running pass: EntryExitInstrumenterPass37; CHECK-O-NEXT: Running pass: LowerExpectIntrinsicPass38; CHECK-O-NEXT: Running pass: SimplifyCFGPass39; CHECK-O-NEXT: Running analysis: TargetIRAnalysis40; CHECK-O-NEXT: Running analysis: AssumptionAnalysis41; CHECK-O-NEXT: Running pass: SROAPass42; CHECK-O-NEXT: Running analysis: DominatorTreeAnalysis43; CHECK-O-NEXT: Running pass: EarlyCSEPass44; CHECK-O-NEXT: Running analysis: TargetLibraryAnalysis45; CHECK-O3-NEXT: Running pass: CallSiteSplittingPass46; CHECK-O-NEXT: Running pass: SampleProfileLoaderPass47; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis48; CHECK-O-NEXT: Running analysis: ProfileSummaryAnalysis49; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis50; CHECK-O-NEXT: Running pass: OpenMPOptPass51; CHECK-O-NEXT: Running pass: IPSCCPPass52; CHECK-O-NEXT: Running pass: CalledValuePropagationPass53; CHECK-O-NEXT: Running pass: GlobalOptPass54; CHECK-O-NEXT: Running pass: PromotePass55; CHECK-O-NEXT: Running pass: InstCombinePass56; CHECK-O-NEXT: Running analysis: LastRunTrackingAnalysis57; CHECK-O-NEXT: Running analysis: OptimizationRemarkEmitterAnalysis on foo58; CHECK-O-NEXT: Running analysis: AAManager on foo59; CHECK-O-NEXT: Running analysis: BasicAA60; CHECK-O-NEXT: Running analysis: ScopedNoAliasAA61; CHECK-O-NEXT: Running analysis: TypeBasedAA62; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy63; CHECK-O-NEXT: Running analysis: BlockFrequencyAnalysis on foo64; CHECK-O-NEXT: Running analysis: BranchProbabilityAnalysis on foo65; CHECK-O-NEXT: Running analysis: LoopAnalysis on foo66; CHECK-O-NEXT: Running analysis: PostDominatorTreeAnalysis on foo67; CHECK-O-NEXT: Running pass: SimplifyCFGPass on foo68; CHECK-O-NEXT: Running pass: PGOForceFunctionAttrsPass69; CHECK-O-NEXT: Running pass: AlwaysInlinerPass70; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass71; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis72; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA73; CHECK-O-NEXT: Running analysis: GlobalsAA74; CHECK-O-NEXT: Running analysis: CallGraphAnalysis75; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager76; CHECK-O-NEXT: Invalidating analysis: AAManager77; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis78; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy79; CHECK-O-NEXT: Running analysis: FunctionAnalysisManagerCGSCCProxy80; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy<{{.*}}LazyCallGraph::SCC{{.*}}>81; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass82; CHECK-O-NEXT: Running pass: InlinerPass83; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass84; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass85; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass86; CHECK-O3-NEXT: Running pass: OpenMPOptCGSCCPass87; CHECK-O-NEXT: Running pass: SROAPass88; CHECK-O-NEXT: Running pass: EarlyCSEPass89; CHECK-O-NEXT: Running analysis: MemorySSAAnalysis90; CHECK-O-NEXT: Running analysis: AAManager91; CHECK-O23SZ-NEXT: Running pass: SpeculativeExecutionPass92; CHECK-O23SZ-NEXT: Running pass: JumpThreadingPass93; CHECK-O23SZ-NEXT: Running analysis: LazyValueAnalysis94; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass95; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis96; CHECK-O-NEXT: Running pass: SimplifyCFGPass97; CHECK-O-NEXT: Running pass: InstCombinePass98; CHECK-O23SZ-NEXT: Running pass: AggressiveInstCombinePass99; CHECK-O1-NEXT: Running pass: LibCallsShrinkWrapPass100; CHECK-O2-NEXT: Running pass: LibCallsShrinkWrapPass101; CHECK-O3-NEXT: Running pass: LibCallsShrinkWrapPass102; CHECK-O23SZ-NEXT: Running pass: TailCallElimPass103; CHECK-O-NEXT: Running pass: SimplifyCFGPass104; CHECK-O-NEXT: Running pass: ReassociatePass105; CHECK-O23SZ-NEXT: Running pass: ConstraintEliminationPass106; CHECK-O23SZ-NEXT: Running analysis: ScalarEvolutionAnalysis107; CHECK-O-NEXT: Running pass: LoopSimplifyPass108; CHECK-O-NEXT: Running pass: LCSSAPass109; CHECK-O1-NEXT: Running analysis: ScalarEvolutionAnalysis110; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy111; CHECK-O-NEXT: Running pass: LoopInstSimplifyPass112; CHECK-O-NEXT: Running pass: LoopSimplifyCFGPass113; CHECK-O-NEXT: Running pass: LICM114; CHECK-O-NEXT: Running pass: LoopRotatePass115; CHECK-O-NEXT: Running pass: LICM116; CHECK-O-NEXT: Running pass: SimpleLoopUnswitchPass117; CHECK-O-NEXT: Running pass: SimplifyCFGPass118; CHECK-O-NEXT: Running pass: InstCombinePass119; CHECK-O-NEXT: Running pass: LoopSimplifyPass120; CHECK-O-NEXT: Running pass: LCSSAPass121; CHECK-O-NEXT: Running pass: LoopIdiomRecognizePass122; CHECK-O-NEXT: Running pass: IndVarSimplifyPass123; CHECK-O-NEXT: Running pass: LoopDeletionPass124; CHECK-O-NEXT: Running pass: SROAPass on foo125; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass126; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass127; CHECK-O23SZ-NEXT: Running pass: GVNPass128; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis129; CHECK-O1-NEXT: Running pass: MemCpyOptPass130; CHECK-O-NEXT: Running pass: SCCPPass131; CHECK-O-NEXT: Running pass: BDCEPass132; CHECK-O-NEXT: Running analysis: DemandedBitsAnalysis133; CHECK-O-NEXT: Running pass: InstCombinePass134; CHECK-O23SZ-NEXT: Running pass: JumpThreadingPass135; CHECK-O23SZ-NEXT: Running analysis: LazyValueAnalysis136; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass137; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis138; CHECK-O1-NEXT: Running pass: CoroElidePass139; CHECK-O-NEXT: Running pass: ADCEPass140; CHECK-O23SZ-NEXT: Running pass: MemCpyOptPass141; CHECK-O23SZ-NEXT: Running pass: DSEPass142; CHECK-O23SZ-NEXT: Running pass: MoveAutoInitPass on foo143; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass144; CHECK-O23SZ-NEXT: Running pass: LCSSAPass145; CHECK-O23SZ-NEXT: Running pass: LICMPass146; CHECK-O23SZ-NEXT: Running pass: CoroElidePass147; CHECK-O-NEXT: Running pass: SimplifyCFGPass148; CHECK-O-NEXT: Running pass: InstCombinePass149; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass150; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ShouldNotRunFunctionPassesAnalysis151; CHECK-O-NEXT: Running analysis: ShouldNotRunFunctionPassesAnalysis152; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ShouldNotRunFunctionPassesAnalysis153; CHECK-O-NEXT: Invalidating analysis: ShouldNotRunFunctionPassesAnalysis154; CHECK-O-NEXT: Invalidating analysis: InlineAdvisorAnalysis155; CHECK-O-NEXT: Running pass: DeadArgumentEliminationPass156; CHECK-O-NEXT: Running pass: GlobalOptPass157; CHECK-O-NEXT: Running pass: GlobalDCEPass158; CHECK-O-NEXT: Running pass: AnnotationRemarksPass on foo159; CHECK-O-NEXT: Running pass: CanonicalizeAliasesPass160; CHECK-O-NEXT: Running pass: NameAnonGlobalPass161; CHECK-O-NEXT: Running pass: PrintModulePass162 163; Make sure we get the IR back out without changes when we print the module.164; CHECK-O-LABEL: define void @foo(i32 %n) local_unnamed_addr165; CHECK-O-NEXT: entry:166; CHECK-O-NEXT: br label %loop167; CHECK-O: loop:168; CHECK-O-NEXT: %iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]169; CHECK-O-NEXT: %iv.next = add i32 %iv, 1170; CHECK-O-NEXT: tail call void @bar()171; CHECK-O-NEXT: %cmp = icmp eq i32 %iv, %n172; CHECK-O-NEXT: br i1 %cmp, label %exit, label %loop173; CHECK-O: exit:174; CHECK-O-NEXT: ret void175; CHECK-O-NEXT: }176;177; Ignore a bunch of intervening metadata containing profile data.178;179 180declare void @bar() local_unnamed_addr181 182define void @foo(i32 %n) local_unnamed_addr {183entry:184 br label %loop185loop:186 %iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]187 %iv.next = add i32 %iv, 1188 tail call void @bar()189 %cmp = icmp eq i32 %iv, %n190 br i1 %cmp, label %exit, label %loop191exit:192 ret void193}194