Home | History | Annotate | Download | only in Other
      1 ; This test is essentially doing very basic things with the opt tool and the
      2 ; new pass manager pipeline. It will be used to flesh out the feature
      3 ; completeness of the opt tool when the new pass manager is engaged. The tests
      4 ; may not be useful once it becomes the default or may get spread out into other
      5 ; files, but for now this is just going to step the new process through its
      6 ; paces.
      7 
      8 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
      9 ; RUN:     -passes=no-op-module %s 2>&1 \
     10 ; RUN:     | FileCheck %s --check-prefix=CHECK-MODULE-PASS
     11 ; CHECK-MODULE-PASS: Starting llvm::Module pass manager run
     12 ; CHECK-MODULE-PASS-NEXT: Running pass: NoOpModulePass
     13 ; CHECK-MODULE-PASS-NEXT: Finished llvm::Module pass manager run
     14 
     15 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
     16 ; RUN:     -passes=no-op-cgscc %s 2>&1 \
     17 ; RUN:     | FileCheck %s --check-prefix=CHECK-CGSCC-PASS
     18 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
     19 ; RUN:     -passes='cgscc(no-op-cgscc)' %s 2>&1 \
     20 ; RUN:     | FileCheck %s --check-prefix=CHECK-CGSCC-PASS
     21 ; CHECK-CGSCC-PASS: Starting llvm::Module pass manager run
     22 ; CHECK-CGSCC-PASS-NEXT: Running pass: ModuleToPostOrderCGSCCPassAdaptor
     23 ; CHECK-CGSCC-PASS-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}>
     24 ; CHECK-CGSCC-PASS-NEXT: Running analysis: LazyCallGraphAnalysis
     25 ; CHECK-CGSCC-PASS-NEXT: Running an SCC pass across the RefSCC: [(foo)]
     26 ; CHECK-CGSCC-PASS-NEXT: Starting llvm::LazyCallGraph::SCC pass manager run
     27 ; CHECK-CGSCC-PASS-NEXT: Running pass: NoOpCGSCCPass
     28 ; CHECK-CGSCC-PASS-NEXT: Finished llvm::LazyCallGraph::SCC pass manager run
     29 ; CHECK-CGSCC-PASS-NEXT: Finished llvm::Module pass manager run
     30 
     31 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
     32 ; RUN:     -passes=no-op-function %s 2>&1 \
     33 ; RUN:     | FileCheck %s --check-prefix=CHECK-FUNCTION-PASS
     34 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
     35 ; RUN:     -passes='function(no-op-function)' %s 2>&1 \
     36 ; RUN:     | FileCheck %s --check-prefix=CHECK-FUNCTION-PASS
     37 ; CHECK-FUNCTION-PASS: Starting llvm::Module pass manager run
     38 ; CHECK-FUNCTION-PASS-NEXT: Running pass: ModuleToFunctionPassAdaptor
     39 ; CHECK-FUNCTION-PASS-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}>
     40 ; CHECK-FUNCTION-PASS-NEXT: Starting llvm::Function pass manager run
     41 ; CHECK-FUNCTION-PASS-NEXT: Running pass: NoOpFunctionPass
     42 ; CHECK-FUNCTION-PASS-NEXT: Finished llvm::Function pass manager run
     43 ; CHECK-FUNCTION-PASS-NEXT: Finished llvm::Module pass manager run
     44 
     45 ; RUN: opt -disable-output -debug-pass-manager -passes=print %s 2>&1 \
     46 ; RUN:     | FileCheck %s --check-prefix=CHECK-MODULE-PRINT
     47 ; CHECK-MODULE-PRINT: Starting llvm::Module pass manager run
     48 ; CHECK-MODULE-PRINT: Running pass: VerifierPass
     49 ; CHECK-MODULE-PRINT: Running pass: PrintModulePass
     50 ; CHECK-MODULE-PRINT: ModuleID
     51 ; CHECK-MODULE-PRINT: define void @foo()
     52 ; CHECK-MODULE-PRINT: Running pass: VerifierPass
     53 ; CHECK-MODULE-PRINT: Finished llvm::Module pass manager run
     54 
     55 ; RUN: opt -disable-output -debug-pass-manager -disable-verify -passes='print,verify' %s 2>&1 \
     56 ; RUN:     | FileCheck %s --check-prefix=CHECK-MODULE-VERIFY
     57 ; CHECK-MODULE-VERIFY: Starting llvm::Module pass manager run
     58 ; CHECK-MODULE-VERIFY: Running pass: PrintModulePass
     59 ; CHECK-MODULE-VERIFY: ModuleID
     60 ; CHECK-MODULE-VERIFY: define void @foo()
     61 ; CHECK-MODULE-VERIFY: Running pass: VerifierPass
     62 ; CHECK-MODULE-VERIFY: Finished llvm::Module pass manager run
     63 
     64 ; RUN: opt -disable-output -debug-pass-manager -passes='function(print)' %s 2>&1 \
     65 ; RUN:     | FileCheck %s --check-prefix=CHECK-FUNCTION-PRINT
     66 ; CHECK-FUNCTION-PRINT: Starting llvm::Module pass manager run
     67 ; CHECK-FUNCTION-PRINT: Running pass: VerifierPass
     68 ; CHECK-FUNCTION-PRINT: Running pass: ModuleToFunctionPassAdaptor
     69 ; CHECK-FUNCTION-PRINT: Running analysis: InnerAnalysisManagerProxy<{{.*}}>
     70 ; CHECK-FUNCTION-PRINT: Starting llvm::Function pass manager run
     71 ; CHECK-FUNCTION-PRINT: Running pass: PrintFunctionPass
     72 ; CHECK-FUNCTION-PRINT-NOT: ModuleID
     73 ; CHECK-FUNCTION-PRINT: define void @foo()
     74 ; CHECK-FUNCTION-PRINT: Finished llvm::Function pass manager run
     75 ; CHECK-FUNCTION-PRINT: Running pass: VerifierPass
     76 ; CHECK-FUNCTION-PRINT: Finished llvm::Module pass manager run
     77 
     78 ; RUN: opt -disable-output -debug-pass-manager -disable-verify -passes='function(print,verify)' %s 2>&1 \
     79 ; RUN:     | FileCheck %s --check-prefix=CHECK-FUNCTION-VERIFY
     80 ; CHECK-FUNCTION-VERIFY: Starting llvm::Module pass manager run
     81 ; CHECK-FUNCTION-VERIFY: Starting llvm::Function pass manager run
     82 ; CHECK-FUNCTION-VERIFY: Running pass: PrintFunctionPass
     83 ; CHECK-FUNCTION-VERIFY-NOT: ModuleID
     84 ; CHECK-FUNCTION-VERIFY: define void @foo()
     85 ; CHECK-FUNCTION-VERIFY: Running pass: VerifierPass
     86 ; CHECK-FUNCTION-VERIFY: Finished llvm::Function pass manager run
     87 ; CHECK-FUNCTION-VERIFY: Finished llvm::Module pass manager run
     88 
     89 ; RUN: opt -S -o - -passes='no-op-module,no-op-module' %s \
     90 ; RUN:     | FileCheck %s --check-prefix=CHECK-NOOP
     91 ; CHECK-NOOP: define void @foo() {
     92 ; CHECK-NOOP:   ret void
     93 ; CHECK-NOOP: }
     94 
     95 ; Round trip through bitcode.
     96 ; RUN: opt -f -o - -passes='no-op-module,no-op-module' %s \
     97 ; RUN:     | llvm-dis \
     98 ; RUN:     | FileCheck %s --check-prefix=CHECK-NOOP
     99 
    100 ; RUN: opt -disable-output -debug-pass-manager -verify-each -passes='no-op-module,function(no-op-function)' %s 2>&1 \
    101 ; RUN:     | FileCheck %s --check-prefix=CHECK-VERIFY-EACH
    102 ; CHECK-VERIFY-EACH: Starting llvm::Module pass manager run
    103 ; CHECK-VERIFY-EACH: Running pass: VerifierPass
    104 ; CHECK-VERIFY-EACH: Running pass: NoOpModulePass
    105 ; CHECK-VERIFY-EACH: Running pass: VerifierPass
    106 ; CHECK-VERIFY-EACH: Starting llvm::Function pass manager run
    107 ; CHECK-VERIFY-EACH: Running pass: NoOpFunctionPass
    108 ; CHECK-VERIFY-EACH: Running pass: VerifierPass
    109 ; CHECK-VERIFY-EACH: Finished llvm::Function pass manager run
    110 ; CHECK-VERIFY-EACH: Running pass: VerifierPass
    111 ; CHECK-VERIFY-EACH: Finished llvm::Module pass manager run
    112 
    113 ; RUN: opt -disable-output -debug-pass-manager -disable-verify -passes='no-op-module,function(no-op-function)' %s 2>&1 \
    114 ; RUN:     | FileCheck %s --check-prefix=CHECK-NO-VERIFY
    115 ; CHECK-NO-VERIFY: Starting llvm::Module pass manager run
    116 ; CHECK-NO-VERIFY-NOT: VerifierPass
    117 ; CHECK-NO-VERIFY: Running pass: NoOpModulePass
    118 ; CHECK-NO-VERIFY-NOT: VerifierPass
    119 ; CHECK-NO-VERIFY: Starting llvm::Function pass manager run
    120 ; CHECK-NO-VERIFY: Running pass: NoOpFunctionPass
    121 ; CHECK-NO-VERIFY-NOT: VerifierPass
    122 ; CHECK-NO-VERIFY: Finished llvm::Function pass manager run
    123 ; CHECK-NO-VERIFY-NOT: VerifierPass
    124 ; CHECK-NO-VERIFY: Finished llvm::Module pass manager run
    125 
    126 ; RUN: opt -disable-output -debug-pass-manager \
    127 ; RUN:     -passes='require<no-op-module>,cgscc(require<no-op-cgscc>,function(require<no-op-function>))' %s 2>&1 \
    128 ; RUN:     | FileCheck %s --check-prefix=CHECK-ANALYSES
    129 ; CHECK-ANALYSES: Starting llvm::Module pass manager run
    130 ; CHECK-ANALYSES: Running pass: RequireAnalysisPass
    131 ; CHECK-ANALYSES: Running analysis: NoOpModuleAnalysis
    132 ; CHECK-ANALYSES: Starting llvm::LazyCallGraph::SCC pass manager run
    133 ; CHECK-ANALYSES: Running pass: RequireAnalysisPass
    134 ; CHECK-ANALYSES: Running analysis: NoOpCGSCCAnalysis
    135 ; CHECK-ANALYSES: Starting llvm::Function pass manager run
    136 ; CHECK-ANALYSES: Running pass: RequireAnalysisPass
    137 ; CHECK-ANALYSES: Running analysis: NoOpFunctionAnalysis
    138 
    139 ; Make sure no-op passes that preserve all analyses don't even try to do any
    140 ; analysis invalidation.
    141 ; RUN: opt -disable-output -debug-pass-manager \
    142 ; RUN:     -passes='require<no-op-module>,cgscc(require<no-op-cgscc>,function(require<no-op-function>))' %s 2>&1 \
    143 ; RUN:     | FileCheck %s --check-prefix=CHECK-NO-OP-INVALIDATION
    144 ; CHECK-NO-OP-INVALIDATION: Starting llvm::Module pass manager run
    145 ; CHECK-NO-OP-INVALIDATION-NOT: Invalidating all non-preserved analyses
    146 
    147 ; RUN: opt -disable-output -debug-pass-manager \
    148 ; RUN:     -passes='require<no-op-module>,require<no-op-module>,require<no-op-module>' %s 2>&1 \
    149 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-CACHE-MODULE-ANALYSIS-RESULTS
    150 ; CHECK-DO-CACHE-MODULE-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    151 ; CHECK-DO-CACHE-MODULE-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    152 ; CHECK-DO-CACHE-MODULE-ANALYSIS-RESULTS: Running analysis: NoOpModuleAnalysis
    153 ; CHECK-DO-CACHE-MODULE-ANALYSIS-RESULTS-NOT: Running analysis: NoOpModuleAnalysis
    154 
    155 ; RUN: opt -disable-output -debug-pass-manager \
    156 ; RUN:     -passes='require<no-op-module>,invalidate<no-op-module>,require<no-op-module>' %s 2>&1 \
    157 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS
    158 ; CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    159 ; CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    160 ; CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS: Running analysis: NoOpModuleAnalysis
    161 ; CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS: Invalidating analysis: NoOpModuleAnalysis
    162 ; CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS: Running analysis: NoOpModuleAnalysis
    163 
    164 ; RUN: opt -disable-output -debug-pass-manager \
    165 ; RUN:     -passes='cgscc(require<no-op-cgscc>,require<no-op-cgscc>,require<no-op-cgscc>)' %s 2>&1 \
    166 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-CACHE-CGSCC-ANALYSIS-RESULTS
    167 ; CHECK-DO-CACHE-CGSCC-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    168 ; CHECK-DO-CACHE-CGSCC-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    169 ; CHECK-DO-CACHE-CGSCC-ANALYSIS-RESULTS: Running analysis: NoOpCGSCCAnalysis
    170 ; CHECK-DO-CACHE-CGSCC-ANALYSIS-RESULTS-NOT: Running analysis: NoOpCGSCCAnalysis
    171 
    172 ; RUN: opt -disable-output -debug-pass-manager \
    173 ; RUN:     -passes='cgscc(require<no-op-cgscc>,invalidate<no-op-cgscc>,require<no-op-cgscc>)' %s 2>&1 \
    174 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS
    175 ; CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    176 ; CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    177 ; CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS: Running analysis: NoOpCGSCCAnalysis
    178 ; CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS: Invalidating analysis: NoOpCGSCCAnalysis
    179 ; CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS: Running analysis: NoOpCGSCCAnalysis
    180 
    181 ; RUN: opt -disable-output -debug-pass-manager \
    182 ; RUN:     -passes='function(require<no-op-function>,require<no-op-function>,require<no-op-function>)' %s 2>&1 \
    183 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-CACHE-FUNCTION-ANALYSIS-RESULTS
    184 ; CHECK-DO-CACHE-FUNCTION-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    185 ; CHECK-DO-CACHE-FUNCTION-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    186 ; CHECK-DO-CACHE-FUNCTION-ANALYSIS-RESULTS: Running analysis: NoOpFunctionAnalysis
    187 ; CHECK-DO-CACHE-FUNCTION-ANALYSIS-RESULTS-NOT: Running analysis: NoOpFunctionAnalysis
    188 
    189 ; RUN: opt -disable-output -debug-pass-manager \
    190 ; RUN:     -passes='function(require<no-op-function>,invalidate<no-op-function>,require<no-op-function>)' %s 2>&1 \
    191 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS
    192 ; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    193 ; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    194 ; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Running analysis: NoOpFunctionAnalysis
    195 ; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Invalidating analysis: NoOpFunctionAnalysis
    196 ; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Running analysis: NoOpFunctionAnalysis
    197 
    198 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    199 ; RUN:     -passes='require<no-op-module>,module(require<no-op-module>,function(require<no-op-function>,invalidate<all>,require<no-op-function>),require<no-op-module>),require<no-op-module>' %s 2>&1 \
    200 ; RUN:     | FileCheck %s --check-prefix=CHECK-INVALIDATE-ALL
    201 ; CHECK-INVALIDATE-ALL: Starting llvm::Module pass manager run
    202 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    203 ; CHECK-INVALIDATE-ALL: Running analysis: NoOpModuleAnalysis
    204 ; CHECK-INVALIDATE-ALL: Starting llvm::Module pass manager run
    205 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    206 ; CHECK-INVALIDATE-ALL-NOT: Running analysis: NoOpModuleAnalysis
    207 ; CHECK-INVALIDATE-ALL: Starting llvm::Function pass manager run
    208 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    209 ; CHECK-INVALIDATE-ALL: Running analysis: NoOpFunctionAnalysis
    210 ; CHECK-INVALIDATE-ALL: Running pass: InvalidateAllAnalysesPass
    211 ; CHECK-INVALIDATE-ALL: Invalidating all non-preserved analyses
    212 ; CHECK-INVALIDATE-ALL: Invalidating analysis: NoOpFunctionAnalysis
    213 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    214 ; CHECK-INVALIDATE-ALL: Running analysis: NoOpFunctionAnalysis
    215 ; CHECK-INVALIDATE-ALL: Finished llvm::Function pass manager run
    216 ; CHECK-INVALIDATE-ALL: Invalidating all non-preserved analyses
    217 ; CHECK-INVALIDATE-ALL-NOT: Running analysis: NoOpFunctionAnalysis
    218 ; CHECK-INVALIDATE-ALL: Invalidating all non-preserved analyses
    219 ; CHECK-INVALIDATE-ALL: Invalidating analysis: NoOpModuleAnalysis
    220 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    221 ; CHECK-INVALIDATE-ALL: Running analysis: NoOpModuleAnalysis
    222 ; CHECK-INVALIDATE-ALL: Finished llvm::Module pass manager run
    223 ; CHECK-INVALIDATE-ALL: Invalidating all non-preserved analyses
    224 ; CHECK-INVALIDATE-ALL-NOT: Invalidating analysis: NoOpModuleAnalysis
    225 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    226 ; CHECK-INVALIDATE-ALL-NOT: Running analysis: NoOpModuleAnalysis
    227 ; CHECK-INVALIDATE-ALL: Finished llvm::Module pass manager run
    228 
    229 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    230 ; RUN:     -passes='require<no-op-module>,module(require<no-op-module>,cgscc(require<no-op-cgscc>,function(require<no-op-function>,invalidate<all>,require<no-op-function>),require<no-op-cgscc>),require<no-op-module>),require<no-op-module>' %s 2>&1 \
    231 ; RUN:     | FileCheck %s --check-prefix=CHECK-INVALIDATE-ALL-CG
    232 ; CHECK-INVALIDATE-ALL-CG: Starting llvm::Module pass manager run
    233 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    234 ; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpModuleAnalysis
    235 ; CHECK-INVALIDATE-ALL-CG: Starting llvm::Module pass manager run
    236 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    237 ; CHECK-INVALIDATE-ALL-CG-NOT: Running analysis: NoOpModuleAnalysis
    238 ; CHECK-INVALIDATE-ALL-CG: Starting llvm::LazyCallGraph::SCC pass manager run
    239 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    240 ; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpCGSCCAnalysis
    241 ; CHECK-INVALIDATE-ALL-CG: Starting llvm::Function pass manager run
    242 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    243 ; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpFunctionAnalysis
    244 ; CHECK-INVALIDATE-ALL-CG: Running pass: InvalidateAllAnalysesPass
    245 ; CHECK-INVALIDATE-ALL-CG: Invalidating all non-preserved analyses
    246 ; CHECK-INVALIDATE-ALL-CG: Invalidating analysis: NoOpFunctionAnalysis
    247 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    248 ; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpFunctionAnalysis
    249 ; CHECK-INVALIDATE-ALL-CG: Finished llvm::Function pass manager run
    250 ; CHECK-INVALIDATE-ALL-CG: Invalidating all non-preserved analyses
    251 ; CHECK-INVALIDATE-ALL-CG-NOT: Running analysis: NoOpFunctionAnalysis
    252 ; CHECK-INVALIDATE-ALL-CG: Invalidating all non-preserved analyses
    253 ; CHECK-INVALIDATE-ALL-CG: Invalidating analysis: NoOpCGSCCAnalysis
    254 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    255 ; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpCGSCCAnalysis
    256 ; CHECK-INVALIDATE-ALL-CG: Finished llvm::LazyCallGraph::SCC pass manager run
    257 ; CHECK-INVALIDATE-ALL-CG: Invalidating all non-preserved analyses
    258 ; CHECK-INVALIDATE-ALL-CG-NOT: Invalidating analysis: NoOpCGSCCAnalysis
    259 ; CHECK-INVALIDATE-ALL-CG: Invalidating all non-preserved analyses
    260 ; CHECK-INVALIDATE-ALL-CG: Invalidating analysis: NoOpModuleAnalysis
    261 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    262 ; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpModuleAnalysis
    263 ; CHECK-INVALIDATE-ALL-CG: Finished llvm::Module pass manager run
    264 ; CHECK-INVALIDATE-ALL-CG: Invalidating all non-preserved analyses
    265 ; CHECK-INVALIDATE-ALL-CG-NOT: Invalidating analysis: NoOpModuleAnalysis
    266 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    267 ; CHECK-INVALIDATE-ALL-CG-NOT: Running analysis: NoOpModuleAnalysis
    268 ; CHECK-INVALIDATE-ALL-CG: Finished llvm::Module pass manager run
    269 
    270 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    271 ; RUN:     -passes='require<targetlibinfo>,invalidate<all>,require<targetlibinfo>' \
    272 ; RUN:     | FileCheck %s --check-prefix=CHECK-TLI
    273 ; CHECK-TLI: Starting llvm::Module pass manager run
    274 ; CHECK-TLI: Running pass: RequireAnalysisPass
    275 ; CHECK-TLI: Running analysis: TargetLibraryAnalysis
    276 ; CHECK-TLI: Running pass: InvalidateAllAnalysesPass
    277 ; CHECK-TLI-NOT: Invalidating analysis: TargetLibraryAnalysis
    278 ; CHECK-TLI: Running pass: RequireAnalysisPass
    279 ; CHECK-TLI-NOT: Running analysis: TargetLibraryAnalysis
    280 ; CHECK-TLI: Finished llvm::Module pass manager run
    281 
    282 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    283 ; RUN:     -passes='require<targetir>,invalidate<all>,require<targetir>' \
    284 ; RUN:     | FileCheck %s --check-prefix=CHECK-TIRA
    285 ; CHECK-TIRA: Starting llvm::Module pass manager run
    286 ; CHECK-TIRA: Running pass: RequireAnalysisPass
    287 ; CHECK-TIRA: Running analysis: TargetIRAnalysis
    288 ; CHECK-TIRA: Running pass: InvalidateAllAnalysesPass
    289 ; CHECK-TIRA-NOT: Invalidating analysis: TargetIRAnalysis
    290 ; CHECK-TIRA: Running pass: RequireAnalysisPass
    291 ; CHECK-TIRA-NOT: Running analysis: TargetIRAnalysis
    292 ; CHECK-TIRA: Finished llvm::Module pass manager run
    293 
    294 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    295 ; RUN:     -passes='require<domtree>' \
    296 ; RUN:     | FileCheck %s --check-prefix=CHECK-DT
    297 ; CHECK-DT: Starting llvm::Module pass manager run
    298 ; CHECK-DT: Running pass: RequireAnalysisPass
    299 ; CHECK-DT: Running analysis: DominatorTreeAnalysis
    300 ; CHECK-DT: Finished llvm::Module pass manager run
    301 
    302 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    303 ; RUN:     -passes='require<basic-aa>' \
    304 ; RUN:     | FileCheck %s --check-prefix=CHECK-BASIC-AA
    305 ; CHECK-BASIC-AA: Starting llvm::Module pass manager run
    306 ; CHECK-BASIC-AA: Running pass: RequireAnalysisPass
    307 ; CHECK-BASIC-AA: Running analysis: BasicAA
    308 ; CHECK-BASIC-AA: Finished llvm::Module pass manager run
    309 
    310 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    311 ; RUN:     -passes='require<aa>' -aa-pipeline='basic-aa' \
    312 ; RUN:     | FileCheck %s --check-prefix=CHECK-AA
    313 ; CHECK-AA: Starting llvm::Module pass manager run
    314 ; CHECK-AA: Running pass: RequireAnalysisPass
    315 ; CHECK-AA: Running analysis: AAManager
    316 ; CHECK-AA: Running analysis: BasicAA
    317 ; CHECK-AA: Finished llvm::Module pass manager run
    318 
    319 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    320 ; RUN:     -passes='require<memdep>' \
    321 ; RUN:     | FileCheck %s --check-prefix=CHECK-MEMDEP
    322 ; CHECK-MEMDEP: Starting llvm::Module pass manager run
    323 ; CHECK-MEMDEP: Running pass: RequireAnalysisPass
    324 ; CHECK-MEMDEP: Running analysis: MemoryDependenceAnalysis
    325 ; CHECK-MEMDEP: Finished llvm::Module pass manager run
    326 
    327 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    328 ; RUN:     -passes='require<callgraph>' \
    329 ; RUN:     | FileCheck %s --check-prefix=CHECK-CALLGRAPH
    330 ; CHECK-CALLGRAPH: Starting llvm::Module pass manager run
    331 ; CHECK-CALLGRAPH: Running pass: RequireAnalysisPass
    332 ; CHECK-CALLGRAPH: Running analysis: CallGraphAnalysis
    333 ; CHECK-CALLGRAPH: Finished llvm::Module pass manager run
    334 
    335 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    336 ; RUN:     -passes='default<O0>' %s 2>&1 \
    337 ; RUN:     | FileCheck %s --check-prefix=CHECK-O2
    338 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    339 ; RUN:     -passes='default<O1>' %s 2>&1 \
    340 ; RUN:     | FileCheck %s --check-prefix=CHECK-O2
    341 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    342 ; RUN:     -passes='default<O2>' %s 2>&1 \
    343 ; RUN:     | FileCheck %s --check-prefix=CHECK-O2
    344 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    345 ; RUN:     -passes='default<Os>' %s 2>&1 \
    346 ; RUN:     | FileCheck %s --check-prefix=CHECK-O2
    347 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    348 ; RUN:     -passes='default<Oz>' %s 2>&1 \
    349 ; RUN:     | FileCheck %s --check-prefix=CHECK-O2
    350 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    351 ; RUN:     -passes='lto-pre-link<O2>' %s 2>&1 \
    352 ; RUN:     | FileCheck %s --check-prefix=CHECK-O2
    353 ; CHECK-O2: Starting llvm::Module pass manager run
    354 ; CHECK-O2: Running pass: SimplifyCFGPass
    355 ; CHECK-O2: Running pass: SROA
    356 ; CHECK-O2: Running pass: EarlyCSEPass
    357 ; CHECK-O2: Running pass: LowerExpectIntrinsicPass
    358 
    359 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    360 ; RUN:     -passes='lto<O2>' %s 2>&1 \
    361 ; RUN:     | FileCheck %s --check-prefix=CHECK-LTO-O2
    362 ; CHECK-LTO-O2: Starting llvm::Module pass manager run
    363 ; CHECK-LTO-O2: Running pass: InstCombinePass
    364 ; CHECK-LTO-O2: Running pass: SimplifyCFGPass
    365 
    366 define void @foo() {
    367   ret void
    368 }
    369 
    370 declare void @bar()
    371