245 lines · plain
1; The IR below was crafted so as:2; 1) To have a loop, so we create a loop pass manager3; 2) To be "immutable" in the sense that no pass in the standard4; pipeline will modify it.5; Since no transformations take place, we don't expect any analyses6; to be invalidated.7; Any invalidation that shows up here is a bug, unless we started modifying8; the IR, in which case we need to make it immutable harder.9;10; Postlink pipelines:11; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager \12; RUN: -passes='thinlto<O1>' -S %s 2>&1 \13; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O1,CHECK-POSTLINK-O,%llvmcheckext14; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager \15; RUN: -passes='thinlto<O2>' -S %s 2>&1 \16; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O2,CHECK-O23SZ,CHECK-POSTLINK-O,%llvmcheckext,CHECK-POSTLINK-O217; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager -passes-ep-pipeline-start='no-op-module' \18; RUN: -passes='thinlto<O3>' -S %s 2>&1 \19; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O3,CHECK-O23SZ,CHECK-POSTLINK-O,%llvmcheckext,CHECK-POSTLINK-O320; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager -passes-ep-optimizer-early='no-op-module' \21; RUN: -passes='thinlto<O3>' -S %s 2>&1 \22; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O3,CHECK-O23SZ,CHECK-POSTLINK-O,%llvmcheckext,CHECK-POSTLINK-O3,CHECK-POST-EP-OPT-EARLY23; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager -passes-ep-optimizer-last='no-op-module' \24; RUN: -passes='thinlto<O3>' -S %s 2>&1 \25; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O3,CHECK-O23SZ,CHECK-POSTLINK-O,%llvmcheckext,CHECK-POSTLINK-O3,CHECK-POST-EP-OPT-LAST26; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager \27; RUN: -passes='thinlto<Os>' -S %s 2>&1 \28; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O23SZ,CHECK-POSTLINK-O,%llvmcheckext,CHECK-POSTLINK-Os29; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager \30; RUN: -passes='thinlto<Oz>' -S %s 2>&1 \31; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O23SZ,CHECK-POSTLINK-O,%llvmcheckext32; RUN: opt -disable-verify -verify-analysis-invalidation=0 -eagerly-invalidate-analyses=0 -debug-pass-manager -debug-info-for-profiling \33; RUN: -passes='thinlto<O2>' -S %s 2>&1 \34; RUN: | FileCheck %s --check-prefixes=CHECK-O,CHECK-O2,CHECK-O23SZ,CHECK-POSTLINK-O,%llvmcheckext,CHECK-POSTLINK-O235 36; Suppress FileCheck --allow-unused-prefixes=false diagnostics.37; CHECK-NOEXT: {{^}}38 39; CHECK-EP-PIPELINE-START: Running pass: NoOpModulePass40; CHECK-DIS: Running analysis: InnerAnalysisManagerProxy41; CHECK-DIS-NEXT: Running pass: AddDiscriminatorsPass42; CHECK-POSTLINK-O: Running pass: PGOIndirectCallPromotion43; CHECK-POSTLINK-O-NEXT: Running analysis: ProfileSummaryAnalysis44; CHECK-POSTLINK-O-NEXT: Running analysis: InnerAnalysisManagerProxy45; CHECK-POSTLINK-O-NEXT: Running analysis: OptimizationRemarkEmitterAnalysis46; CHECK-O-NEXT: Running pass: OpenMPOptPass47; CHECK-POSTLINK-O-NEXT: Running pass: LowerTypeTestsPass48; CHECK-O-NEXT: Running pass: IPSCCPPass49; CHECK-O-NEXT: Running analysis: DominatorTreeAnalysis50; CHECK-O-NEXT: Running analysis: AssumptionAnalysis51; CHECK-O-NEXT: Running analysis: TargetIRAnalysis52; CHECK-O-NEXT: Running pass: CalledValuePropagationPass53; CHECK-O-NEXT: Running pass: GlobalOptPass54; CHECK-O-NEXT: Running analysis: TargetLibraryAnalysis55; CHECK-O-NEXT: Running pass: PromotePass56; CHECK-O-NEXT: Running pass: InstCombinePass57; CHECK-O-NEXT: Running analysis: LastRunTrackingAnalysis58; CHECK-O-NEXT: Running analysis: TargetLibraryAnalysis59; CHECK-O-NEXT: Running analysis: AAManager60; CHECK-O-NEXT: Running analysis: BasicAA61; CHECK-O-NEXT: Running analysis: ScopedNoAliasAA62; CHECK-O-NEXT: Running analysis: TypeBasedAA63; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy64; CHECK-O-NEXT: Running pass: SimplifyCFGPass65; CHECK-O-NEXT: Running pass: AlwaysInlinerPass66; CHECK-PRELINK-O-NEXT: Running analysis: ProfileSummaryAnalysis67; CHECK-O-NEXT: Running pass: ModuleInlinerWrapperPass68; CHECK-O-NEXT: Running analysis: InlineAdvisorAnalysis69; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}GlobalsAA70; CHECK-O-NEXT: Running analysis: GlobalsAA71; CHECK-O-NEXT: Running analysis: CallGraphAnalysis72; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}AAManager73; CHECK-O-NEXT: Invalidating analysis: AAManager74; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ProfileSummaryAnalysis75; CHECK-O-NEXT: Running analysis: InnerAnalysisManagerProxy76; CHECK-O-NEXT: Running analysis: LazyCallGraphAnalysis77; CHECK-O-NEXT: Running analysis: FunctionAnalysisManagerCGSCCProxy78; CHECK-O-NEXT: Running analysis: OuterAnalysisManagerProxy79; CHECK-O-NEXT: Running pass: DevirtSCCRepeatedPass80; CHECK-O-NEXT: Running pass: InlinerPass81; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass82; CHECK-O3-NEXT: Running pass: ArgumentPromotionPass83; CHECK-O2-NEXT: Running pass: OpenMPOptCGSCCPass on (foo)84; CHECK-O3-NEXT: Running pass: OpenMPOptCGSCCPass on (foo)85; CHECK-O-NEXT: Running pass: SROAPass86; CHECK-O-NEXT: Running pass: EarlyCSEPass87; CHECK-O-NEXT: Running analysis: MemorySSAAnalysis88; CHECK-O-NEXT: Running analysis: AAManager89; CHECK-O23SZ-NEXT: Running pass: SpeculativeExecutionPass90; CHECK-O23SZ-NEXT: Running pass: JumpThreadingPass91; CHECK-O23SZ-NEXT: Running analysis: LazyValueAnalysis92; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass93; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis94; CHECK-O-NEXT: Running pass: SimplifyCFGPass95; CHECK-O-NEXT: Running pass: InstCombinePass96; CHECK-O23SZ-NEXT: Running pass: AggressiveInstCombinePass97; CHECK-O1-NEXT: Running pass: LibCallsShrinkWrapPass98; CHECK-O2-NEXT: Running pass: LibCallsShrinkWrapPass99; CHECK-O3-NEXT: Running pass: LibCallsShrinkWrapPass100; CHECK-O23SZ-NEXT: Running pass: TailCallElimPass101; CHECK-O-NEXT: Running pass: SimplifyCFGPass102; CHECK-O-NEXT: Running pass: ReassociatePass103; CHECK-O23SZ-NEXT: Running pass: ConstraintEliminationPass104; CHECK-O23SZ-NEXT: Running analysis: LoopAnalysis105; CHECK-O23SZ-NEXT: Running analysis: ScalarEvolutionAnalysis106; CHECK-O-NEXT: Running pass: LoopSimplifyPass107; CHECK-O1-NEXT: Running analysis: LoopAnalysis108; 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: LoopFullUnrollPass125; CHECK-O-NEXT: Running pass: SROAPass on foo126; CHECK-O23SZ-NEXT: Running pass: VectorCombinePass127; CHECK-O23SZ-NEXT: Running pass: MergedLoadStoreMotionPass128; CHECK-O23SZ-NEXT: Running pass: GVNPass129; CHECK-O23SZ-NEXT: Running analysis: MemoryDependenceAnalysis130; CHECK-O1-NEXT: Running pass: MemCpyOptPass131; CHECK-O1-NEXT: Running analysis: PostDominatorTreeAnalysis132; CHECK-O-NEXT: Running pass: SCCPPass133; CHECK-O-NEXT: Running pass: BDCEPass134; CHECK-O-NEXT: Running analysis: DemandedBitsAnalysis135; CHECK-O-NEXT: Running pass: InstCombinePass136; CHECK-O23SZ-NEXT: Running pass: JumpThreadingPass137; CHECK-O23SZ-NEXT: Running analysis: LazyValueAnalysis138; CHECK-O23SZ-NEXT: Running pass: CorrelatedValuePropagationPass139; CHECK-O23SZ-NEXT: Invalidating analysis: LazyValueAnalysis140; CHECK-O1-NEXT: Running pass: CoroElidePass141; CHECK-O-NEXT: Running pass: ADCEPass142; CHECK-O23SZ-NEXT: Running analysis: PostDominatorTreeAnalysis143; CHECK-O23SZ-NEXT: Running pass: MemCpyOptPass144; CHECK-O23SZ-NEXT: Running pass: DSEPass145; CHECK-O23SZ-NEXT: Running pass: MoveAutoInitPass on foo146; CHECK-O23SZ-NEXT: Running pass: LoopSimplifyPass147; CHECK-O23SZ-NEXT: Running pass: LCSSAPass148; CHECK-O23SZ-NEXT: Running pass: LICMPass on loop149; CHECK-O23SZ-NEXT: Running pass: CoroElidePass150; CHECK-O-NEXT: Running pass: SimplifyCFGPass151; CHECK-O-NEXT: Running pass: InstCombinePass152; CHECK-O-NEXT: Running pass: PostOrderFunctionAttrsPass153; CHECK-O-NEXT: Running pass: RequireAnalysisPass<{{.*}}ShouldNotRunFunctionPassesAnalysis154; CHECK-O-NEXT: Running analysis: ShouldNotRunFunctionPassesAnalysis155; CHECK-O-NEXT: Running pass: CoroSplitPass156; CHECK-O-NEXT: Running pass: CoroAnnotationElidePass157; CHECK-O-NEXT: Running pass: InvalidateAnalysisPass<{{.*}}ShouldNotRunFunctionPassesAnalysis158; CHECK-O-NEXT: Invalidating analysis: ShouldNotRunFunctionPassesAnalysis159; CHECK-O-NEXT: Invalidating analysis: InlineAdvisorAnalysis160; CHECK-O-NEXT: Running pass: DeadArgumentEliminationPass161; CHECK-O-NEXT: Running pass: SimplifyTypeTestsPass162; CHECK-O-NEXT: Running pass: CoroCleanupPass163; CHECK-POSTLINK-O-NEXT: Running pass: GlobalOptPass164; CHECK-POSTLINK-O-NEXT: Running pass: GlobalDCEPass165; CHECK-POSTLINK-O-NEXT: Running pass: EliminateAvailableExternallyPass166; CHECK-POSTLINK-O-NEXT: Running pass: ReversePostOrderFunctionAttrsPass167; CHECK-POSTLINK-O-NEXT: Running pass: RecomputeGlobalsAAPass168; CHECK-POST-EP-OPT-EARLY-NEXT: Running pass: NoOpModulePass169; CHECK-POSTLINK-O-NEXT: Running pass: DropUnnecessaryAssumesPass170; CHECK-POSTLINK-O-NEXT: Running pass: Float2IntPass171; CHECK-POSTLINK-O-NEXT: Running pass: LowerConstantIntrinsicsPass172; CHECK-POSTLINK-O3-NEXT: Running pass: ControlHeightReductionPass173; CHECK-EXT: Running pass: {{.*}}::Bye174; CHECK-POSTLINK-O-NEXT: Running pass: LoopSimplifyPass175; CHECK-POSTLINK-O-NEXT: Running pass: LCSSAPass176; CHECK-POSTLINK-O-NEXT: Running pass: LoopRotatePass177; CHECK-POSTLINK-O-NEXT: Running pass: LoopDeletionPass178; CHECK-POSTLINK-O-NEXT: Running pass: LoopDistributePass179; CHECK-POSTLINK-O-NEXT: Running analysis: LoopAccessAnalysis on foo180; CHECK-POSTLINK-O-NEXT: Running pass: InjectTLIMappings181; CHECK-POSTLINK-O-NEXT: Running pass: LoopVectorizePass182; CHECK-POSTLINK-O-NEXT: Running pass: DropUnnecessaryAssumesPass183; CHECK-POSTLINK-O-NEXT: Running pass: InferAlignmentPass184; CHECK-POSTLINK-O-NEXT: Running pass: LoopLoadEliminationPass185; CHECK-POSTLINK-O-NEXT: Running pass: InstCombinePass186; CHECK-POSTLINK-O-NEXT: Running pass: SimplifyCFGPass187; CHECK-POSTLINK-O2-NEXT: Running pass: SLPVectorizerPass188; CHECK-POSTLINK-O3-NEXT: Running pass: SLPVectorizerPass189; CHECK-POSTLINK-Os-NEXT: Running pass: SLPVectorizerPass190; CHECK-POSTLINK-O-NEXT: Running pass: VectorCombinePass191; CHECK-POSTLINK-O-NEXT: Running pass: InstCombinePass192; CHECK-POSTLINK-O-NEXT: Running pass: LoopUnrollPass193; CHECK-POSTLINK-O-NEXT: Running pass: WarnMissedTransformationsPass194; CHECK-POSTLINK-O-NEXT: Running pass: SROAPass195; CHECK-POSTLINK-O-NEXT: Running pass: InferAlignmentPass196; CHECK-POSTLINK-O-NEXT: Running pass: InstCombinePass197; CHECK-POSTLINK-O-NEXT: Running pass: LoopSimplifyPass198; CHECK-POSTLINK-O-NEXT: Running pass: LCSSAPass199; CHECK-POSTLINK-O-NEXT: Running pass: LICMPass200; CHECK-POSTLINK-O-NEXT: Running pass: AlignmentFromAssumptionsPass201; CHECK-POSTLINK-O-NEXT: Running pass: LoopSinkPass202; CHECK-POSTLINK-O-NEXT: Running pass: InstSimplifyPass203; CHECK-POSTLINK-O-NEXT: Running pass: DivRemPairsPass204; CHECK-POSTLINK-O-NEXT: Running pass: TailCallElimPass205; CHECK-POSTLINK-O-NEXT: Running pass: SimplifyCFGPass206; CHECK-POST-EP-OPT-LAST-NEXT: Running pass: NoOpModulePass207; CHECK-POSTLINK-O-NEXT: Running pass: GlobalDCEPass208; CHECK-POSTLINK-O-NEXT: Running pass: ConstantMergePass209; CHECK-POSTLINK-O-NEXT: Running pass: CGProfilePass210; CHECK-POSTLINK-O-NEXT: Running pass: RelLookupTableConverterPass211; CHECK-EP-OPT-EARLY-NEXT: Running pass: NoOpModulePass212; CHECK-EP-OPT-LAST-NEXT: Running pass: NoOpModulePass213; CHECK-O-NEXT: Running pass: AnnotationRemarksPass on foo214; CHECK-O-NEXT: Running pass: PrintModulePass215 216; Make sure we get the IR back out without changes when we print the module.217; CHECK-O-LABEL: define void @foo(i32 %n) local_unnamed_addr {218; CHECK-O-NEXT: entry:219; CHECK-O-NEXT: br label %loop220; CHECK-O: loop:221; CHECK-O-NEXT: %iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]222; CHECK-O-NEXT: %iv.next = add i32 %iv, 1223; CHECK-O-NEXT: tail call void @bar()224; CHECK-O-NEXT: %cmp = icmp eq i32 %iv, %n225; CHECK-O-NEXT: br i1 %cmp, label %exit, label %loop226; CHECK-O: exit:227; CHECK-O-NEXT: ret void228; CHECK-O-NEXT: }229;230 231declare void @bar() local_unnamed_addr232 233define void @foo(i32 %n) local_unnamed_addr {234entry:235 br label %loop236loop:237 %iv = phi i32 [ 0, %entry ], [ %iv.next, %loop ]238 %iv.next = add i32 %iv, 1239 tail call void @bar()240 %cmp = icmp eq i32 %iv, %n241 br i1 %cmp, label %exit, label %loop242exit:243 ret void244}245