1; RUN: opt -disable-output -debug-pass-manager \
2; RUN:     -passes=no-op-module,no-op-module %s 2>&1 \
3; RUN:     | FileCheck %s --check-prefix=CHECK-TWO-NOOP-MP
4; CHECK-TWO-NOOP-MP: Starting llvm::Module pass manager run
5; CHECK-TWO-NOOP-MP: Running pass: NoOpModulePass
6; CHECK-TWO-NOOP-MP: Running pass: NoOpModulePass
7; CHECK-TWO-NOOP-MP: Finished llvm::Module pass manager run
8
9; RUN: opt -disable-output -debug-pass-manager \
10; RUN:     -passes='module(no-op-module,no-op-module)' %s 2>&1 \
11; RUN:     | FileCheck %s --check-prefix=CHECK-NESTED-TWO-NOOP-MP
12; CHECK-NESTED-TWO-NOOP-MP: Starting llvm::Module pass manager run
13; CHECK-NESTED-TWO-NOOP-MP: Starting llvm::Module pass manager run
14; CHECK-NESTED-TWO-NOOP-MP: Running pass: NoOpModulePass
15; CHECK-NESTED-TWO-NOOP-MP: Running pass: NoOpModulePass
16; CHECK-NESTED-TWO-NOOP-MP: Finished llvm::Module pass manager run
17; CHECK-NESTED-TWO-NOOP-MP: Finished llvm::Module pass manager run
18
19; RUN: opt -disable-output -debug-pass-manager \
20; RUN:     -passes=no-op-function,no-op-function %s 2>&1 \
21; RUN:     | FileCheck %s --check-prefix=CHECK-TWO-NOOP-FP
22; CHECK-TWO-NOOP-FP: Starting llvm::Module pass manager run
23; CHECK-TWO-NOOP-FP: Running pass: ModuleToFunctionPassAdaptor
24; CHECK-TWO-NOOP-FP: Starting llvm::Function pass manager run
25; CHECK-TWO-NOOP-FP: Running pass: NoOpFunctionPass
26; CHECK-TWO-NOOP-FP: Running pass: NoOpFunctionPass
27; CHECK-TWO-NOOP-FP: Finished llvm::Function pass manager run
28; CHECK-TWO-NOOP-FP: Finished llvm::Module pass manager run
29
30; RUN: opt -disable-output -debug-pass-manager \
31; RUN:     -passes='function(no-op-function,no-op-function)' %s 2>&1 \
32; RUN:     | FileCheck %s --check-prefix=CHECK-NESTED-TWO-NOOP-FP
33; CHECK-NESTED-TWO-NOOP-FP: Starting llvm::Module pass manager run
34; CHECK-NESTED-TWO-NOOP-FP: Running pass: ModuleToFunctionPassAdaptor
35; CHECK-NESTED-TWO-NOOP-FP: Starting llvm::Function pass manager run
36; CHECK-NESTED-TWO-NOOP-FP: Running pass: NoOpFunctionPass
37; CHECK-NESTED-TWO-NOOP-FP: Running pass: NoOpFunctionPass
38; CHECK-NESTED-TWO-NOOP-FP: Finished llvm::Function pass manager run
39; CHECK-NESTED-TWO-NOOP-FP: Finished llvm::Module pass manager run
40
41; RUN: opt -disable-output -debug-pass-manager \
42; RUN:     -passes='no-op-module,function(no-op-function,no-op-function),no-op-module' %s 2>&1 \
43; RUN:     | FileCheck %s --check-prefix=CHECK-MIXED-FP-AND-MP
44; CHECK-MIXED-FP-AND-MP: Starting llvm::Module pass manager run
45; CHECK-MIXED-FP-AND-MP: Running pass: NoOpModulePass
46; CHECK-MIXED-FP-AND-MP: Running pass: ModuleToFunctionPassAdaptor
47; CHECK-MIXED-FP-AND-MP: Starting llvm::Function pass manager run
48; CHECK-MIXED-FP-AND-MP: Running pass: NoOpFunctionPass
49; CHECK-MIXED-FP-AND-MP: Running pass: NoOpFunctionPass
50; CHECK-MIXED-FP-AND-MP: Finished llvm::Function pass manager run
51; CHECK-MIXED-FP-AND-MP: Running pass: NoOpModulePass
52; CHECK-MIXED-FP-AND-MP: Finished llvm::Module pass manager run
53
54; RUN: not opt -disable-output -debug-pass-manager \
55; RUN:     -passes='no-op-module)' %s 2>&1 \
56; RUN:     | FileCheck %s --check-prefix=CHECK-UNBALANCED1
57; CHECK-UNBALANCED1: unable to parse pass pipeline description
58
59; RUN: not opt -disable-output -debug-pass-manager \
60; RUN:     -passes='module(no-op-module))' %s 2>&1 \
61; RUN:     | FileCheck %s --check-prefix=CHECK-UNBALANCED2
62; CHECK-UNBALANCED2: unable to parse pass pipeline description
63
64; RUN: not opt -disable-output -debug-pass-manager \
65; RUN:     -passes='module(no-op-module' %s 2>&1 \
66; RUN:     | FileCheck %s --check-prefix=CHECK-UNBALANCED3
67; CHECK-UNBALANCED3: unable to parse pass pipeline description
68
69; RUN: not opt -disable-output -debug-pass-manager \
70; RUN:     -passes='no-op-function)' %s 2>&1 \
71; RUN:     | FileCheck %s --check-prefix=CHECK-UNBALANCED4
72; CHECK-UNBALANCED4: unable to parse pass pipeline description
73
74; RUN: not opt -disable-output -debug-pass-manager \
75; RUN:     -passes='function(no-op-function))' %s 2>&1 \
76; RUN:     | FileCheck %s --check-prefix=CHECK-UNBALANCED5
77; CHECK-UNBALANCED5: unable to parse pass pipeline description
78
79; RUN: not opt -disable-output -debug-pass-manager \
80; RUN:     -passes='function(function(no-op-function)))' %s 2>&1 \
81; RUN:     | FileCheck %s --check-prefix=CHECK-UNBALANCED6
82; CHECK-UNBALANCED6: unable to parse pass pipeline description
83
84; RUN: not opt -disable-output -debug-pass-manager \
85; RUN:     -passes='function(no-op-function' %s 2>&1 \
86; RUN:     | FileCheck %s --check-prefix=CHECK-UNBALANCED7
87; CHECK-UNBALANCED7: unable to parse pass pipeline description
88
89; RUN: not opt -disable-output -debug-pass-manager \
90; RUN:     -passes='function(function(no-op-function)' %s 2>&1 \
91; RUN:     | FileCheck %s --check-prefix=CHECK-UNBALANCED8
92; CHECK-UNBALANCED8: unable to parse pass pipeline description
93
94; RUN: not opt -disable-output -debug-pass-manager \
95; RUN:     -passes='no-op-module,)' %s 2>&1 \
96; RUN:     | FileCheck %s --check-prefix=CHECK-UNBALANCED9
97; CHECK-UNBALANCED9: unable to parse pass pipeline description
98
99; RUN: not opt -disable-output -debug-pass-manager \
100; RUN:     -passes='no-op-function,)' %s 2>&1 \
101; RUN:     | FileCheck %s --check-prefix=CHECK-UNBALANCED10
102; CHECK-UNBALANCED10: unable to parse pass pipeline description
103
104; RUN: opt -disable-output -debug-pass-manager \
105; RUN:     -passes=no-op-cgscc,no-op-cgscc %s 2>&1 \
106; RUN:     | FileCheck %s --check-prefix=CHECK-TWO-NOOP-CG
107; CHECK-TWO-NOOP-CG: Starting llvm::Module pass manager run
108; CHECK-TWO-NOOP-CG: Running pass: ModuleToPostOrderCGSCCPassAdaptor
109; CHECK-TWO-NOOP-CG: Starting CGSCC pass manager run
110; CHECK-TWO-NOOP-CG: Running pass: NoOpCGSCCPass
111; CHECK-TWO-NOOP-CG: Running pass: NoOpCGSCCPass
112; CHECK-TWO-NOOP-CG: Finished CGSCC pass manager run
113; CHECK-TWO-NOOP-CG: Finished llvm::Module pass manager run
114
115; RUN: opt -disable-output -debug-pass-manager \
116; RUN:     -passes='module(function(no-op-function),cgscc(no-op-cgscc,function(no-op-function),no-op-cgscc),function(no-op-function))' %s 2>&1 \
117; RUN:     | FileCheck %s --check-prefix=CHECK-NESTED-MP-CG-FP
118; CHECK-NESTED-MP-CG-FP: Starting llvm::Module pass manager run
119; CHECK-NESTED-MP-CG-FP: Starting llvm::Module pass manager run
120; CHECK-NESTED-MP-CG-FP: Running pass: ModuleToFunctionPassAdaptor
121; CHECK-NESTED-MP-CG-FP: Starting llvm::Function pass manager run
122; CHECK-NESTED-MP-CG-FP: Running pass: NoOpFunctionPass
123; CHECK-NESTED-MP-CG-FP: Finished llvm::Function pass manager run
124; CHECK-NESTED-MP-CG-FP: Running pass: ModuleToPostOrderCGSCCPassAdaptor
125; CHECK-NESTED-MP-CG-FP: Starting CGSCC pass manager run
126; CHECK-NESTED-MP-CG-FP: Running pass: NoOpCGSCCPass
127; CHECK-NESTED-MP-CG-FP: Running pass: CGSCCToFunctionPassAdaptor
128; CHECK-NESTED-MP-CG-FP: Starting llvm::Function pass manager run
129; CHECK-NESTED-MP-CG-FP: Running pass: NoOpFunctionPass
130; CHECK-NESTED-MP-CG-FP: Finished llvm::Function pass manager run
131; CHECK-NESTED-MP-CG-FP: Running pass: NoOpCGSCCPass
132; CHECK-NESTED-MP-CG-FP: Finished CGSCC pass manager run
133; CHECK-NESTED-MP-CG-FP: Running pass: ModuleToFunctionPassAdaptor
134; CHECK-NESTED-MP-CG-FP: Starting llvm::Function pass manager run
135; CHECK-NESTED-MP-CG-FP: Running pass: NoOpFunctionPass
136; CHECK-NESTED-MP-CG-FP: Finished llvm::Function pass manager run
137; CHECK-NESTED-MP-CG-FP: Finished llvm::Module pass manager run
138; CHECK-NESTED-MP-CG-FP: Finished llvm::Module pass manager run
139
140; RUN: opt -disable-output -debug-pass-manager \
141; RUN:     -passes='no-op-loop,no-op-loop' %s 2>&1 \
142; RUN:     | FileCheck %s --check-prefix=CHECK-TWO-NOOP-LOOP
143; CHECK-TWO-NOOP-LOOP: Starting llvm::Module pass manager run
144; CHECK-TWO-NOOP-LOOP: Running pass: ModuleToFunctionPassAdaptor
145; CHECK-TWO-NOOP-LOOP: Starting llvm::Function pass manager run
146; CHECK-TWO-NOOP-LOOP: Running pass: FunctionToLoopPassAdaptor
147; CHECK-TWO-NOOP-LOOP: Starting Loop pass manager run
148; CHECK-TWO-NOOP-LOOP: Running pass: NoOpLoopPass
149; CHECK-TWO-NOOP-LOOP: Running pass: NoOpLoopPass
150; CHECK-TWO-NOOP-LOOP: Finished Loop pass manager run
151; CHECK-TWO-NOOP-LOOP: Finished llvm::Function pass manager run
152; CHECK-TWO-NOOP-LOOP: Finished llvm::Module pass manager run
153
154; RUN: opt -disable-output -debug-pass-manager \
155; RUN:     -passes='module(function(loop(no-op-loop)))' %s 2>&1 \
156; RUN:     | FileCheck %s --check-prefix=CHECK-NESTED-FP-LP
157; RUN: opt -disable-output -debug-pass-manager \
158; RUN:     -passes='function(loop(no-op-loop))' %s 2>&1 \
159; RUN:     | FileCheck %s --check-prefix=CHECK-NESTED-FP-LP
160; RUN: opt -disable-output -debug-pass-manager \
161; RUN:     -passes='loop(no-op-loop)' %s 2>&1 \
162; RUN:     | FileCheck %s --check-prefix=CHECK-NESTED-FP-LP
163; RUN: opt -disable-output -debug-pass-manager \
164; RUN:     -passes='no-op-loop' %s 2>&1 \
165; RUN:     | FileCheck %s --check-prefix=CHECK-NESTED-FP-LP
166; CHECK-NESTED-FP-LP: Starting llvm::Module pass manager run
167; CHECK-NESTED-FP-LP: Running pass: ModuleToFunctionPassAdaptor
168; CHECK-NESTED-FP-LP: Starting llvm::Function pass manager run
169; CHECK-NESTED-FP-LP: Running pass: FunctionToLoopPassAdaptor
170; CHECK-NESTED-FP-LP: Starting Loop pass manager run
171; CHECK-NESTED-FP-LP: Running pass: NoOpLoopPass
172; CHECK-NESTED-FP-LP: Finished Loop pass manager run
173; CHECK-NESTED-FP-LP: Finished llvm::Function pass manager run
174; CHECK-NESTED-FP-LP: Finished llvm::Module pass manager run
175
176; RUN: not opt -disable-output -debug-pass-manager \
177; RUN:     -passes='function(no-op-function)function(no-op-function)' %s 2>&1 \
178; RUN:     | FileCheck %s --check-prefix=CHECK-MISSING-COMMA1
179; CHECK-MISSING-COMMA1: unable to parse pass pipeline description
180
181; RUN: not opt -disable-output -debug-pass-manager \
182; RUN:     -passes='function()' %s 2>&1 \
183; RUN:     | FileCheck %s --check-prefix=CHECK-EMPTY-INNER-PIPELINE
184; CHECK-EMPTY-INNER-PIPELINE: unable to parse pass pipeline description
185
186; RUN: not opt -disable-output -debug-pass-manager \
187; RUN:     -passes='no-op-module(no-op-module,whatever)' %s 2>&1 \
188; RUN:     | FileCheck %s --check-prefix=CHECK-PIPELINE-ON-MODULE-PASS
189; CHECK-PIPELINE-ON-MODULE-PASS: unable to parse pass pipeline description
190
191; RUN: not opt -disable-output -debug-pass-manager \
192; RUN:     -passes='no-op-cgscc(no-op-cgscc,whatever)' %s 2>&1 \
193; RUN:     | FileCheck %s --check-prefix=CHECK-PIPELINE-ON-CGSCC-PASS
194; CHECK-PIPELINE-ON-CGSCC-PASS: unable to parse pass pipeline description
195
196; RUN: not opt -disable-output -debug-pass-manager \
197; RUN:     -passes='no-op-function(no-op-function,whatever)' %s 2>&1 \
198; RUN:     | FileCheck %s --check-prefix=CHECK-PIPELINE-ON-FUNCTION-PASS
199; CHECK-PIPELINE-ON-FUNCTION-PASS: unable to parse pass pipeline description
200
201; RUN: not opt -disable-output -debug-pass-manager \
202; RUN:     -passes='no-op-loop(no-op-loop,whatever)' %s 2>&1 \
203; RUN:     | FileCheck %s --check-prefix=CHECK-PIPELINE-ON-LOOP-PASS
204; CHECK-PIPELINE-ON-LOOP-PASS: unable to parse pass pipeline description
205
206; RUN: not opt -disable-output -debug-pass-manager \
207; RUN:     -passes='no-op-function()' %s 2>&1 \
208; RUN:     | FileCheck %s --check-prefix=CHECK-EMPTY-PIPELINE-ON-PASS
209; CHECK-EMPTY-PIPELINE-ON-PASS: unable to parse pass pipeline description
210
211define void @f() {
212entry:
213 br label %loop
214loop:
215 br label %loop
216}
217