1; FIXME: This test should use CHECK-NEXT to keep up-to-date.
2; REQUIRES: x86-registered-target
3
4; Validate ThinLTO post link pipeline at O2 and O3
5
6; RUN: opt -thinlto-bc -o %t.o %s
7
8; RUN: llvm-lto2 run -thinlto-distributed-indexes %t.o \
9; RUN:   -o %t2.index \
10; RUN:   -r=%t.o,main,px
11
12; RUN: %clang -target x86_64-grtev4-linux-gnu \
13; RUN:   -O2 -Xclang -fdebug-pass-manager \
14; RUN:   -c -fthinlto-index=%t.o.thinlto.bc \
15; RUN:   -o %t.native.o -x ir %t.o 2>&1 | FileCheck -check-prefix=CHECK-O %s --dump-input=fail
16
17; RUN: %clang -target x86_64-grtev4-linux-gnu \
18; RUN:   -O3 -Xclang -fdebug-pass-manager \
19; RUN:   -c -fthinlto-index=%t.o.thinlto.bc \
20; RUN:   -o %t.native.o -x ir %t.o 2>&1 | FileCheck -check-prefixes=CHECK-O,CHECK-O3 %s --dump-input=fail
21
22; CHECK-O: Running pass: WholeProgramDevirtPass
23; CHECK-O: Running pass: LowerTypeTestsPass
24; CHECK-O: Running pass: ForceFunctionAttrsPass
25; CHECK-O: Running pass: PGOIndirectCallPromotion
26; CHECK-O: Running pass: InferFunctionAttrsPass
27; CHECK-O: Running pass: LowerExpectIntrinsicPass on main
28; CHECK-O: Running pass: SimplifyCFGPass on main
29; CHECK-O: Running pass: SROAPass on main
30; CHECK-O: Running pass: EarlyCSEPass on main
31; CHECK-O3: Running pass: CallSiteSplittingPass on main
32; CHECK-O: Running pass: LowerTypeTestsPass
33; CHECK-O: Running pass: IPSCCPPass
34; CHECK-O: Running pass: CalledValuePropagationPass
35; CHECK-O: Running pass: GlobalOptPass
36; CHECK-O: Running pass: PromotePass
37; CHECK-O: Running pass: DeadArgumentEliminationPass
38; CHECK-O: Running pass: InstCombinePass on main
39; CHECK-O: Running pass: SimplifyCFGPass on main
40; CHECK-O: Running pass: InlinerPass on (main)
41; CHECK-O: Running pass: PostOrderFunctionAttrsPass on (main)
42; CHECK-O3: Running pass: ArgumentPromotionPass on (main)
43; CHECK-O: Running pass: SROAPass on main
44; CHECK-O: Running pass: EarlyCSEPass on main
45; CHECK-O: Running pass: SpeculativeExecutionPass on main
46; CHECK-O: Running pass: JumpThreadingPass on main
47; CHECK-O: Running pass: CorrelatedValuePropagationPass on main
48; CHECK-O: Running pass: SimplifyCFGPass on main
49; CHECK-O: Running pass: InstCombinePass on main
50; CHECK-O3: Running pass: AggressiveInstCombinePass on main
51; CHECK-O: Running pass: LibCallsShrinkWrapPass on main
52; CHECK-O: Running pass: TailCallElimPass on main
53; CHECK-O: Running pass: SimplifyCFGPass on main
54; CHECK-O: Running pass: ReassociatePass on main
55; CHECK-O: Running pass: RequireAnalysisPass<{{.*}}OptimizationRemarkEmitterAnalysis
56; CHECK-O: Running pass: LoopSimplifyPass on main
57; CHECK-O: Running pass: LCSSAPass on main
58; CHECK-O: Running pass: SimplifyCFGPass on main
59; CHECK-O: Running pass: InstCombinePass on main
60; CHECK-O: Running pass: LoopSimplifyPass on main
61; CHECK-O: Running pass: LCSSAPass on main
62; CHECK-O: Running pass: SROAPass on main
63; CHECK-O: Running pass: MergedLoadStoreMotionPass on main
64; CHECK-O: Running pass: GVNPass on main
65; CHECK-O: Running pass: SCCPPass on main
66; CHECK-O: Running pass: BDCEPass on main
67; CHECK-O: Running pass: InstCombinePass on main
68; CHECK-O: Running pass: JumpThreadingPass on main
69; CHECK-O: Running pass: CorrelatedValuePropagationPass on main
70; CHECK-O: Running pass: ADCEPass on main
71; CHECK-O: Running pass: MemCpyOptPass on main
72; CHECK-O: Running pass: DSEPass on main
73; CHECK-O: Running pass: LoopSimplifyPass on main
74; CHECK-O: Running pass: LCSSAPass on main
75; CHECK-O: Running pass: SimplifyCFGPass on main
76; CHECK-O: Running pass: InstCombinePass on main
77; CHECK-O: Running pass: GlobalOptPass
78; CHECK-O: Running pass: GlobalDCEPass
79; CHECK-O: Running pass: EliminateAvailableExternallyPass
80; CHECK-O: Running pass: ReversePostOrderFunctionAttrsPass
81; CHECK-O: Running pass: RecomputeGlobalsAAPass
82; CHECK-O: Running pass: Float2IntPass on main
83; CHECK-O: Running pass: LowerConstantIntrinsicsPass on main
84; CHECK-O: Running pass: LoopSimplifyPass on main
85; CHECK-O: Running pass: LCSSAPass on main
86; CHECK-O: Running pass: LoopRotatePass on Loop at depth 1 containing: %b
87; CHECK-O: Running pass: LoopDistributePass on main
88; CHECK-O: Running pass: InjectTLIMappings on main
89; CHECK-O: Running pass: LoopVectorizePass on main
90; CHECK-O: Running pass: LoopLoadEliminationPass on main
91; CHECK-O: Running pass: InstCombinePass on main
92; CHECK-O: Running pass: SimplifyCFGPass on main
93; CHECK-O: Running pass: SLPVectorizerPass on main
94; CHECK-O: Running pass: VectorCombinePass on main
95; CHECK-O: Running pass: InstCombinePass on main
96; CHECK-O: Running pass: LoopUnrollPass on main
97; CHECK-O: Running pass: WarnMissedTransformationsPass on main
98; CHECK-O: Running pass: InstCombinePass on main
99; CHECK-O: Running pass: RequireAnalysisPass<{{.*}}OptimizationRemarkEmitterAnalysis
100; CHECK-O: Running pass: LoopSimplifyPass on main
101; CHECK-O: Running pass: LCSSAPass on main
102; CHECK-O: Running pass: LICMPass on Loop at depth 1 containing: %b
103; CHECK-O: Running pass: AlignmentFromAssumptionsPass on main
104; CHECK-O: Running pass: LoopSinkPass on main
105; CHECK-O: Running pass: InstSimplifyPass on main
106; CHECK-O: Running pass: DivRemPairsPass on main
107; CHECK-O: Running pass: SimplifyCFGPass on main
108; CHECK-O: Running pass: GlobalDCEPass
109; CHECK-O: Running pass: ConstantMergePass
110; CHECK-O: Running pass: CGProfilePass
111
112target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
113target triple = "x86_64-grtev4-linux-gnu"
114
115define i32 @main() {
116  br label %b
117b:
118  br label %b
119  ret i32 0
120}
121