1; RUN: opt -enable-new-pm=0 -mtriple=x86_64-- -O2 -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck --check-prefixes=CHECK,%llvmcheckext %s
2
3; REQUIRES: asserts
4
5; CHECK-LABEL: Pass Arguments:
6; CHECK-NEXT: Target Transform Information
7; CHECK-NEXT: Type-Based Alias Analysis
8; CHECK-NEXT: Scoped NoAlias Alias Analysis
9; CHECK-NEXT: Assumption Cache Tracker
10; CHECK-NEXT: Target Library Information
11; CHECK-NEXT:   FunctionPass Manager
12; CHECK-NEXT:     Module Verifier
13; CHECK-EXT:      Good Bye World Pass
14; CHECK-NOEXT-NOT:      Good Bye World Pass
15; CHECK-NEXT:     Instrument function entry/exit with calls to e.g. mcount() (pre inlining)
16; CHECK-NEXT:     Simplify the CFG
17; CHECK-NEXT:     Dominator Tree Construction
18; CHECK-NEXT:     SROA
19; CHECK-NEXT:     Early CSE
20; CHECK-NEXT:     Lower 'expect' Intrinsics
21; CHECK-NEXT: Pass Arguments:
22; CHECK-NEXT: Target Library Information
23; CHECK-NEXT: Target Transform Information
24;             Target Pass Configuration
25; CHECK:      Type-Based Alias Analysis
26; CHECK-NEXT: Scoped NoAlias Alias Analysis
27; CHECK-NEXT: Assumption Cache Tracker
28; CHECK-NEXT: Profile summary info
29; CHECK-NEXT:   ModulePass Manager
30; CHECK-NEXT:     Annotation2Metadata
31; CHECK-NEXT:     Force set function attributes
32; CHECK-NEXT:     Infer set function attributes
33; CHECK-NEXT:     Interprocedural Sparse Conditional Constant Propagation
34; CHECK-NEXT:       FunctionPass Manager
35; CHECK-NEXT:         Dominator Tree Construction
36; CHECK-NEXT:     Called Value Propagation
37; CHECK-NEXT:     Global Variable Optimizer
38; CHECK-NEXT:       FunctionPass Manager
39; CHECK-NEXT:         Dominator Tree Construction
40; CHECK-NEXT:         Natural Loop Information
41; CHECK-NEXT:         Post-Dominator Tree Construction
42; CHECK-NEXT:         Branch Probability Analysis
43; CHECK-NEXT:         Block Frequency Analysis
44; CHECK-NEXT:     FunctionPass Manager
45; CHECK-NEXT:       Dominator Tree Construction
46; CHECK-NEXT:       Promote Memory to Register
47; CHECK-NEXT:     Dead Argument Elimination
48; CHECK-NEXT:     FunctionPass Manager
49; CHECK-NEXT:       Dominator Tree Construction
50; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
51; CHECK-NEXT:       Function Alias Analysis Results
52; CHECK-NEXT:       Natural Loop Information
53; CHECK-NEXT:       Lazy Branch Probability Analysis
54; CHECK-NEXT:       Lazy Block Frequency Analysis
55; CHECK-NEXT:       Optimization Remark Emitter
56; CHECK-NEXT:       Combine redundant instructions
57; CHECK-NEXT:       Simplify the CFG
58; CHECK-NEXT:     CallGraph Construction
59; CHECK-NEXT:     Globals Alias Analysis
60; CHECK-NEXT:     Call Graph SCC Pass Manager
61; CHECK-NEXT:       Remove unused exception handling info
62; CHECK-NEXT:       Function Integration/Inlining
63; CHECK-NEXT:       OpenMP specific optimizations
64; CHECK-NEXT:       Deduce function attributes
65; CHECK-NEXT:       FunctionPass Manager
66; CHECK-NEXT:         Dominator Tree Construction
67; CHECK-NEXT:         SROA
68; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
69; CHECK-NEXT:         Function Alias Analysis Results
70; CHECK-NEXT:         Memory SSA
71; CHECK-NEXT:         Early CSE w/ MemorySSA
72; CHECK-NEXT:         Speculatively execute instructions if target has divergent branches
73; CHECK-NEXT:         Function Alias Analysis Results
74; CHECK-NEXT:         Lazy Value Information Analysis
75; CHECK-NEXT:         Jump Threading
76; CHECK-NEXT:         Value Propagation
77; CHECK-NEXT:         Simplify the CFG
78; CHECK-NEXT:         Dominator Tree Construction
79; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
80; CHECK-NEXT:         Function Alias Analysis Results
81; CHECK-NEXT:         Natural Loop Information
82; CHECK-NEXT:         Lazy Branch Probability Analysis
83; CHECK-NEXT:         Lazy Block Frequency Analysis
84; CHECK-NEXT:         Optimization Remark Emitter
85; CHECK-NEXT:         Combine redundant instructions
86; CHECK-NEXT:         Conditionally eliminate dead library calls
87; CHECK-NEXT:         Natural Loop Information
88; CHECK-NEXT:         Post-Dominator Tree Construction
89; CHECK-NEXT:         Branch Probability Analysis
90; CHECK-NEXT:         Block Frequency Analysis
91; CHECK-NEXT:         Lazy Branch Probability Analysis
92; CHECK-NEXT:         Lazy Block Frequency Analysis
93; CHECK-NEXT:         Optimization Remark Emitter
94; CHECK-NEXT:         PGOMemOPSize
95; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
96; CHECK-NEXT:         Function Alias Analysis Results
97; CHECK-NEXT:         Natural Loop Information
98; CHECK-NEXT:         Lazy Branch Probability Analysis
99; CHECK-NEXT:         Lazy Block Frequency Analysis
100; CHECK-NEXT:         Optimization Remark Emitter
101; CHECK-NEXT:         Tail Call Elimination
102; CHECK-NEXT:         Simplify the CFG
103; CHECK-NEXT:         Reassociate expressions
104; CHECK-NEXT:         Dominator Tree Construction
105; CHECK-NEXT:         Natural Loop Information
106; CHECK-NEXT:         Canonicalize natural loops
107; CHECK-NEXT:         LCSSA Verifier
108; CHECK-NEXT:         Loop-Closed SSA Form Pass
109; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
110; CHECK-NEXT:         Function Alias Analysis Results
111; CHECK-NEXT:         Scalar Evolution Analysis
112; CHECK-NEXT:         Loop Pass Manager
113; CHECK-NEXT:           Rotate Loops
114; CHECK-NEXT:         Memory SSA
115; CHECK-NEXT:         Lazy Branch Probability Analysis
116; CHECK-NEXT:         Lazy Block Frequency Analysis
117; CHECK-NEXT:         Loop Pass Manager
118; CHECK-NEXT:           Loop Invariant Code Motion
119; CHECK-NEXT:           Unswitch loops
120; CHECK-NEXT:         Simplify the CFG
121; CHECK-NEXT:         Dominator Tree Construction
122; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
123; CHECK-NEXT:         Function Alias Analysis Results
124; CHECK-NEXT:         Natural Loop Information
125; CHECK-NEXT:         Lazy Branch Probability Analysis
126; CHECK-NEXT:         Lazy Block Frequency Analysis
127; CHECK-NEXT:         Optimization Remark Emitter
128; CHECK-NEXT:         Combine redundant instructions
129; CHECK-NEXT:         Canonicalize natural loops
130; CHECK-NEXT:         LCSSA Verifier
131; CHECK-NEXT:         Loop-Closed SSA Form Pass
132; CHECK-NEXT:         Scalar Evolution Analysis
133; CHECK-NEXT:         Loop Pass Manager
134; CHECK-NEXT:           Recognize loop idioms
135; CHECK-NEXT:           Induction Variable Simplification
136; CHECK-NEXT:           Delete dead loops
137; CHECK-NEXT:           Unroll loops
138; CHECK-NEXT:         SROA
139; CHECK-NEXT:         Function Alias Analysis Results
140; CHECK-NEXT:         MergedLoadStoreMotion
141; CHECK-NEXT:         Phi Values Analysis
142; CHECK-NEXT:         Function Alias Analysis Results
143; CHECK-NEXT:         Memory Dependence Analysis
144; CHECK-NEXT:         Lazy Branch Probability Analysis
145; CHECK-NEXT:         Lazy Block Frequency Analysis
146; CHECK-NEXT:         Optimization Remark Emitter
147; CHECK-NEXT:         Global Value Numbering
148; CHECK-NEXT:         Phi Values Analysis
149; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
150; CHECK-NEXT:         Function Alias Analysis Results
151; CHECK-NEXT:         Memory Dependence Analysis
152; CHECK-NEXT:         MemCpy Optimization
153; CHECK-NEXT:         Sparse Conditional Constant Propagation
154; CHECK-NEXT:         Demanded bits analysis
155; CHECK-NEXT:         Bit-Tracking Dead Code Elimination
156; CHECK-NEXT:         Function Alias Analysis Results
157; CHECK-NEXT:         Lazy Branch Probability Analysis
158; CHECK-NEXT:         Lazy Block Frequency Analysis
159; CHECK-NEXT:         Optimization Remark Emitter
160; CHECK-NEXT:         Combine redundant instructions
161; CHECK-NEXT:         Lazy Value Information Analysis
162; CHECK-NEXT:         Jump Threading
163; CHECK-NEXT:         Value Propagation
164; CHECK-NEXT:         Post-Dominator Tree Construction
165; CHECK-NEXT:         Aggressive Dead Code Elimination
166; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
167; CHECK-NEXT:         Function Alias Analysis Results
168; CHECK-NEXT:         Memory SSA
169; CHECK-NEXT:         Dead Store Elimination
170; CHECK-NEXT:         Natural Loop Information
171; CHECK-NEXT:         Canonicalize natural loops
172; CHECK-NEXT:         LCSSA Verifier
173; CHECK-NEXT:         Loop-Closed SSA Form Pass
174; CHECK-NEXT:         Function Alias Analysis Results
175; CHECK-NEXT:         Scalar Evolution Analysis
176; CHECK-NEXT:         Lazy Branch Probability Analysis
177; CHECK-NEXT:         Lazy Block Frequency Analysis
178; CHECK-NEXT:         Loop Pass Manager
179; CHECK-NEXT:           Loop Invariant Code Motion
180; CHECK-NEXT:         Simplify the CFG
181; CHECK-NEXT:         Dominator Tree Construction
182; CHECK-NEXT:         Basic Alias Analysis (stateless AA impl)
183; CHECK-NEXT:         Function Alias Analysis Results
184; CHECK-NEXT:         Natural Loop Information
185; CHECK-NEXT:         Lazy Branch Probability Analysis
186; CHECK-NEXT:         Lazy Block Frequency Analysis
187; CHECK-NEXT:         Optimization Remark Emitter
188; CHECK-NEXT:         Combine redundant instructions
189; CHECK-NEXT:     A No-Op Barrier Pass
190; CHECK-NEXT:     Eliminate Available Externally Globals
191; CHECK-NEXT:     CallGraph Construction
192; CHECK-NEXT:     Deduce function attributes in RPO
193; CHECK-NEXT:     Global Variable Optimizer
194; CHECK-NEXT:       FunctionPass Manager
195; CHECK-NEXT:         Dominator Tree Construction
196; CHECK-NEXT:         Natural Loop Information
197; CHECK-NEXT:         Post-Dominator Tree Construction
198; CHECK-NEXT:         Branch Probability Analysis
199; CHECK-NEXT:         Block Frequency Analysis
200; CHECK-NEXT:     Dead Global Elimination
201; CHECK-NEXT:     CallGraph Construction
202; CHECK-NEXT:     Globals Alias Analysis
203; CHECK-NEXT:     FunctionPass Manager
204; CHECK-NEXT:       Dominator Tree Construction
205; CHECK-NEXT:       Float to int
206; CHECK-NEXT:       Lower constant intrinsics
207; CHECK-NEXT:       Dominator Tree Construction
208; CHECK-NEXT:       Natural Loop Information
209; CHECK-NEXT:       Canonicalize natural loops
210; CHECK-NEXT:       LCSSA Verifier
211; CHECK-NEXT:       Loop-Closed SSA Form Pass
212; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
213; CHECK-NEXT:       Function Alias Analysis Results
214; CHECK-NEXT:       Scalar Evolution Analysis
215; CHECK-NEXT:       Loop Pass Manager
216; CHECK-NEXT:         Rotate Loops
217; CHECK-NEXT:       Loop Access Analysis
218; CHECK-NEXT:       Lazy Branch Probability Analysis
219; CHECK-NEXT:       Lazy Block Frequency Analysis
220; CHECK-NEXT:       Optimization Remark Emitter
221; CHECK-NEXT:       Loop Distribution
222; CHECK-NEXT:       Post-Dominator Tree Construction
223; CHECK-NEXT:       Branch Probability Analysis
224; CHECK-NEXT:       Block Frequency Analysis
225; CHECK-NEXT:       Scalar Evolution Analysis
226; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
227; CHECK-NEXT:       Function Alias Analysis Results
228; CHECK-NEXT:       Loop Access Analysis
229; CHECK-NEXT:       Demanded bits analysis
230; CHECK-NEXT:       Lazy Branch Probability Analysis
231; CHECK-NEXT:       Lazy Block Frequency Analysis
232; CHECK-NEXT:       Optimization Remark Emitter
233; CHECK-NEXT:       Inject TLI Mappings
234; CHECK-NEXT:       Loop Vectorization
235; CHECK-NEXT:       Canonicalize natural loops
236; CHECK-NEXT:       Scalar Evolution Analysis
237; CHECK-NEXT:       Function Alias Analysis Results
238; CHECK-NEXT:       Loop Access Analysis
239; CHECK-NEXT:       Lazy Branch Probability Analysis
240; CHECK-NEXT:       Lazy Block Frequency Analysis
241; CHECK-NEXT:       Loop Load Elimination
242; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
243; CHECK-NEXT:       Function Alias Analysis Results
244; CHECK-NEXT:       Lazy Branch Probability Analysis
245; CHECK-NEXT:       Lazy Block Frequency Analysis
246; CHECK-NEXT:       Optimization Remark Emitter
247; CHECK-NEXT:       Combine redundant instructions
248; CHECK-NEXT:       Simplify the CFG
249; CHECK-NEXT:       Dominator Tree Construction
250; CHECK-NEXT:       Natural Loop Information
251; CHECK-NEXT:       Scalar Evolution Analysis
252; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
253; CHECK-NEXT:       Function Alias Analysis Results
254; CHECK-NEXT:       Demanded bits analysis
255; CHECK-NEXT:       Lazy Branch Probability Analysis
256; CHECK-NEXT:       Lazy Block Frequency Analysis
257; CHECK-NEXT:       Optimization Remark Emitter
258; CHECK-NEXT:       Inject TLI Mappings
259; CHECK-NEXT:       SLP Vectorizer
260; CHECK-NEXT:       Optimize scalar/vector ops
261; CHECK-NEXT:       Optimization Remark Emitter
262; CHECK-NEXT:       Combine redundant instructions
263; CHECK-NEXT:       Canonicalize natural loops
264; CHECK-NEXT:       LCSSA Verifier
265; CHECK-NEXT:       Loop-Closed SSA Form Pass
266; CHECK-NEXT:       Scalar Evolution Analysis
267; CHECK-NEXT:       Loop Pass Manager
268; CHECK-NEXT:         Unroll loops
269; CHECK-NEXT:       Lazy Branch Probability Analysis
270; CHECK-NEXT:       Lazy Block Frequency Analysis
271; CHECK-NEXT:       Optimization Remark Emitter
272; CHECK-NEXT:       Combine redundant instructions
273; CHECK-NEXT:       Memory SSA
274; CHECK-NEXT:       Canonicalize natural loops
275; CHECK-NEXT:       LCSSA Verifier
276; CHECK-NEXT:       Loop-Closed SSA Form Pass
277; CHECK-NEXT:       Scalar Evolution Analysis
278; CHECK-NEXT:       Lazy Branch Probability Analysis
279; CHECK-NEXT:       Lazy Block Frequency Analysis
280; CHECK-NEXT:       Loop Pass Manager
281; CHECK-NEXT:         Loop Invariant Code Motion
282; CHECK-NEXT:       Optimization Remark Emitter
283; CHECK-NEXT:       Warn about non-applied transformations
284; CHECK-NEXT:       Alignment from assumptions
285; CHECK-NEXT:     Strip Unused Function Prototypes
286; CHECK-NEXT:     Dead Global Elimination
287; CHECK-NEXT:     Merge Duplicate Global Constants
288; CHECK-NEXT:     Call Graph Profile
289; CHECK-NEXT:       FunctionPass Manager
290; CHECK-NEXT:         Dominator Tree Construction
291; CHECK-NEXT:         Natural Loop Information
292; CHECK-NEXT:         Lazy Branch Probability Analysis
293; CHECK-NEXT:         Lazy Block Frequency Analysis
294; CHECK-NEXT:     FunctionPass Manager
295; CHECK-NEXT:       Dominator Tree Construction
296; CHECK-NEXT:       Natural Loop Information
297; CHECK-NEXT:       Post-Dominator Tree Construction
298; CHECK-NEXT:       Branch Probability Analysis
299; CHECK-NEXT:       Block Frequency Analysis
300; CHECK-NEXT:       Canonicalize natural loops
301; CHECK-NEXT:       LCSSA Verifier
302; CHECK-NEXT:       Loop-Closed SSA Form Pass
303; CHECK-NEXT:       Basic Alias Analysis (stateless AA impl)
304; CHECK-NEXT:       Function Alias Analysis Results
305; CHECK-NEXT:       Scalar Evolution Analysis
306; CHECK-NEXT:       Block Frequency Analysis
307; CHECK-NEXT:       Loop Pass Manager
308; CHECK-NEXT:         Loop Sink
309; CHECK-NEXT:       Lazy Branch Probability Analysis
310; CHECK-NEXT:       Lazy Block Frequency Analysis
311; CHECK-NEXT:       Optimization Remark Emitter
312; CHECK-NEXT:       Remove redundant instructions
313; CHECK-NEXT:       Hoist/decompose integer division and remainder
314; CHECK-NEXT:       Simplify the CFG
315; CHECK-NEXT:       Annotation Remarks
316; CHECK-NEXT:       Module Verifier
317; CHECK-NEXT:     Bitcode Writer
318; CHECK-NEXT: Pass Arguments:
319; CHECK-NEXT:  FunctionPass Manager
320; CHECK-NEXT:     Dominator Tree Construction
321; CHECK-NEXT: Pass Arguments:
322; CHECK-NEXT: Target Library Information
323; CHECK-NEXT:   FunctionPass Manager
324; CHECK-NEXT:     Dominator Tree Construction
325; CHECK-NEXT:     Natural Loop Information
326; CHECK-NEXT:     Post-Dominator Tree Construction
327; CHECK-NEXT:     Branch Probability Analysis
328; CHECK-NEXT:     Block Frequency Analysis
329; CHECK-NEXT: Pass Arguments:
330; CHECK-NEXT: Target Library Information
331; CHECK-NEXT:   FunctionPass Manager
332; CHECK-NEXT:     Dominator Tree Construction
333; CHECK-NEXT:     Natural Loop Information
334; CHECK-NEXT:     Post-Dominator Tree Construction
335; CHECK-NEXT:     Branch Probability Analysis
336; CHECK-NEXT:     Block Frequency Analysis
337
338define void @f() {
339  ret void
340}
341