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<{{.*(CGSCCAnalysisManager|AnalysisManager<.*LazyCallGraph::SCC.*>).*}},{{.*}}Module>
     24 ; CHECK-CGSCC-PASS-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*(FunctionAnalysisManager|AnalysisManager<.*Function.*>).*}},{{.*}}Module>
     25 ; CHECK-CGSCC-PASS-NEXT: Running analysis: LazyCallGraphAnalysis
     26 ; CHECK-CGSCC-PASS-NEXT: Running analysis: TargetLibraryAnalysis
     27 ; CHECK-CGSCC-PASS-NEXT: Starting CGSCC pass manager run
     28 ; CHECK-CGSCC-PASS-NEXT: Running pass: NoOpCGSCCPass
     29 ; CHECK-CGSCC-PASS-NEXT: Finished CGSCC pass manager run
     30 ; CHECK-CGSCC-PASS-NEXT: Finished llvm::Module pass manager run
     31 
     32 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
     33 ; RUN:     -passes=no-op-function %s 2>&1 \
     34 ; RUN:     | FileCheck %s --check-prefix=CHECK-FUNCTION-PASS
     35 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
     36 ; RUN:     -passes='function(no-op-function)' %s 2>&1 \
     37 ; RUN:     | FileCheck %s --check-prefix=CHECK-FUNCTION-PASS
     38 ; CHECK-FUNCTION-PASS: Starting llvm::Module pass manager run
     39 ; CHECK-FUNCTION-PASS-NEXT: Running pass: ModuleToFunctionPassAdaptor
     40 ; CHECK-FUNCTION-PASS-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}>
     41 ; CHECK-FUNCTION-PASS-NEXT: Starting llvm::Function pass manager run
     42 ; CHECK-FUNCTION-PASS-NEXT: Running pass: NoOpFunctionPass
     43 ; CHECK-FUNCTION-PASS-NEXT: Finished llvm::Function pass manager run
     44 ; CHECK-FUNCTION-PASS-NEXT: Finished llvm::Module pass manager run
     45 
     46 ; RUN: opt -disable-output -debug-pass-manager -passes=print %s 2>&1 \
     47 ; RUN:     | FileCheck %s --check-prefix=CHECK-MODULE-PRINT
     48 ; CHECK-MODULE-PRINT: Starting llvm::Module pass manager run
     49 ; CHECK-MODULE-PRINT: Running pass: VerifierPass
     50 ; CHECK-MODULE-PRINT: Running pass: PrintModulePass
     51 ; CHECK-MODULE-PRINT: ModuleID
     52 ; CHECK-MODULE-PRINT: define void @foo(i1 %x, i8* %p1, i8* %p2)
     53 ; CHECK-MODULE-PRINT: Running pass: VerifierPass
     54 ; CHECK-MODULE-PRINT: Finished llvm::Module pass manager run
     55 
     56 ; RUN: opt -disable-output -debug-pass-manager -disable-verify -passes='print,verify' %s 2>&1 \
     57 ; RUN:     | FileCheck %s --check-prefix=CHECK-MODULE-VERIFY
     58 ; CHECK-MODULE-VERIFY: Starting llvm::Module pass manager run
     59 ; CHECK-MODULE-VERIFY: Running pass: PrintModulePass
     60 ; CHECK-MODULE-VERIFY: ModuleID
     61 ; CHECK-MODULE-VERIFY: define void @foo(i1 %x, i8* %p1, i8* %p2)
     62 ; CHECK-MODULE-VERIFY: Running pass: VerifierPass
     63 ; CHECK-MODULE-VERIFY: Finished llvm::Module pass manager run
     64 
     65 ; RUN: opt -disable-output -debug-pass-manager -passes='function(print)' %s 2>&1 \
     66 ; RUN:     | FileCheck %s --check-prefix=CHECK-FUNCTION-PRINT
     67 ; CHECK-FUNCTION-PRINT: Starting llvm::Module pass manager run
     68 ; CHECK-FUNCTION-PRINT: Running pass: VerifierPass
     69 ; CHECK-FUNCTION-PRINT: Running pass: ModuleToFunctionPassAdaptor
     70 ; CHECK-FUNCTION-PRINT: Running analysis: InnerAnalysisManagerProxy<{{.*}}>
     71 ; CHECK-FUNCTION-PRINT: Starting llvm::Function pass manager run
     72 ; CHECK-FUNCTION-PRINT: Running pass: PrintFunctionPass
     73 ; CHECK-FUNCTION-PRINT-NOT: ModuleID
     74 ; CHECK-FUNCTION-PRINT: define void @foo(i1 %x, i8* %p1, i8* %p2)
     75 ; CHECK-FUNCTION-PRINT: Finished llvm::Function pass manager run
     76 ; CHECK-FUNCTION-PRINT: Running pass: VerifierPass
     77 ; CHECK-FUNCTION-PRINT: Finished llvm::Module pass manager run
     78 
     79 ; RUN: opt -disable-output -debug-pass-manager -disable-verify -passes='function(print,verify)' %s 2>&1 \
     80 ; RUN:     | FileCheck %s --check-prefix=CHECK-FUNCTION-VERIFY
     81 ; CHECK-FUNCTION-VERIFY: Starting llvm::Module pass manager run
     82 ; CHECK-FUNCTION-VERIFY: Starting llvm::Function pass manager run
     83 ; CHECK-FUNCTION-VERIFY: Running pass: PrintFunctionPass
     84 ; CHECK-FUNCTION-VERIFY-NOT: ModuleID
     85 ; CHECK-FUNCTION-VERIFY: define void @foo(i1 %x, i8* %p1, i8* %p2)
     86 ; CHECK-FUNCTION-VERIFY: Running pass: VerifierPass
     87 ; CHECK-FUNCTION-VERIFY: Finished llvm::Function pass manager run
     88 ; CHECK-FUNCTION-VERIFY: Finished llvm::Module pass manager run
     89 
     90 ; RUN: opt -S -o - -passes='no-op-module,no-op-module' %s \
     91 ; RUN:     | FileCheck %s --check-prefix=CHECK-NOOP
     92 ; CHECK-NOOP: define void @foo(i1 %x, i8* %p1, i8* %p2) {
     93 ; CHECK-NOOP: entry:
     94 ; CHECK-NOOP:   store i8 42, i8* %p1
     95 ; CHECK-NOOP:   br i1 %x, label %loop, label %exit
     96 ; CHECK-NOOP: loop:
     97 ; CHECK-NOOP:   %tmp1 = load i8, i8* %p2
     98 ; CHECK-NOOP:   br label %loop
     99 ; CHECK-NOOP: exit:
    100 ; CHECK-NOOP:   ret void
    101 ; CHECK-NOOP: }
    102 
    103 ; Round trip through bitcode.
    104 ; RUN: opt -f -o - -passes='no-op-module,no-op-module' %s \
    105 ; RUN:     | llvm-dis \
    106 ; RUN:     | FileCheck %s --check-prefix=CHECK-NOOP
    107 
    108 ; RUN: opt -disable-output -debug-pass-manager -verify-each -passes='no-op-module,function(no-op-function)' %s 2>&1 \
    109 ; RUN:     | FileCheck %s --check-prefix=CHECK-VERIFY-EACH
    110 ; CHECK-VERIFY-EACH: Starting llvm::Module pass manager run
    111 ; CHECK-VERIFY-EACH: Running pass: VerifierPass
    112 ; CHECK-VERIFY-EACH: Running pass: NoOpModulePass
    113 ; CHECK-VERIFY-EACH: Running pass: VerifierPass
    114 ; CHECK-VERIFY-EACH: Starting llvm::Function pass manager run
    115 ; CHECK-VERIFY-EACH: Running pass: NoOpFunctionPass
    116 ; CHECK-VERIFY-EACH: Running pass: VerifierPass
    117 ; CHECK-VERIFY-EACH: Finished llvm::Function pass manager run
    118 ; CHECK-VERIFY-EACH: Running pass: VerifierPass
    119 ; CHECK-VERIFY-EACH: Finished llvm::Module pass manager run
    120 
    121 ; RUN: opt -disable-output -debug-pass-manager -disable-verify -passes='no-op-module,function(no-op-function)' %s 2>&1 \
    122 ; RUN:     | FileCheck %s --check-prefix=CHECK-NO-VERIFY
    123 ; CHECK-NO-VERIFY: Starting llvm::Module pass manager run
    124 ; CHECK-NO-VERIFY-NOT: VerifierPass
    125 ; CHECK-NO-VERIFY: Running pass: NoOpModulePass
    126 ; CHECK-NO-VERIFY-NOT: VerifierPass
    127 ; CHECK-NO-VERIFY: Starting llvm::Function pass manager run
    128 ; CHECK-NO-VERIFY: Running pass: NoOpFunctionPass
    129 ; CHECK-NO-VERIFY-NOT: VerifierPass
    130 ; CHECK-NO-VERIFY: Finished llvm::Function pass manager run
    131 ; CHECK-NO-VERIFY-NOT: VerifierPass
    132 ; CHECK-NO-VERIFY: Finished llvm::Module pass manager run
    133 
    134 ; RUN: opt -disable-output -debug-pass-manager \
    135 ; RUN:     -passes='require<no-op-module>,cgscc(require<no-op-cgscc>,function(require<no-op-function>))' %s 2>&1 \
    136 ; RUN:     | FileCheck %s --check-prefix=CHECK-ANALYSES
    137 ; CHECK-ANALYSES: Starting llvm::Module pass manager run
    138 ; CHECK-ANALYSES: Running pass: RequireAnalysisPass
    139 ; CHECK-ANALYSES: Running analysis: NoOpModuleAnalysis
    140 ; CHECK-ANALYSES: Starting CGSCC pass manager run
    141 ; CHECK-ANALYSES: Running pass: RequireAnalysisPass
    142 ; CHECK-ANALYSES: Running analysis: NoOpCGSCCAnalysis
    143 ; CHECK-ANALYSES: Starting llvm::Function pass manager run
    144 ; CHECK-ANALYSES: Running pass: RequireAnalysisPass
    145 ; CHECK-ANALYSES: Running analysis: NoOpFunctionAnalysis
    146 
    147 ; Make sure no-op passes that preserve all analyses don't even try to do any
    148 ; analysis invalidation.
    149 ; RUN: opt -disable-output -debug-pass-manager \
    150 ; RUN:     -passes='require<no-op-module>,cgscc(require<no-op-cgscc>,function(require<no-op-function>))' %s 2>&1 \
    151 ; RUN:     | FileCheck %s --check-prefix=CHECK-NO-OP-INVALIDATION
    152 ; CHECK-NO-OP-INVALIDATION: Starting llvm::Module pass manager run
    153 ; CHECK-NO-OP-INVALIDATION-NOT: Invalidating all non-preserved analyses
    154 
    155 ; RUN: opt -disable-output -debug-pass-manager \
    156 ; RUN:     -passes='require<no-op-module>,require<no-op-module>,require<no-op-module>' %s 2>&1 \
    157 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-CACHE-MODULE-ANALYSIS-RESULTS
    158 ; CHECK-DO-CACHE-MODULE-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    159 ; CHECK-DO-CACHE-MODULE-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    160 ; CHECK-DO-CACHE-MODULE-ANALYSIS-RESULTS: Running analysis: NoOpModuleAnalysis
    161 ; CHECK-DO-CACHE-MODULE-ANALYSIS-RESULTS-NOT: Running analysis: NoOpModuleAnalysis
    162 
    163 ; RUN: opt -disable-output -debug-pass-manager \
    164 ; RUN:     -passes='require<no-op-module>,invalidate<no-op-module>,require<no-op-module>' %s 2>&1 \
    165 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS
    166 ; CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    167 ; CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    168 ; CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS: Running analysis: NoOpModuleAnalysis
    169 ; CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS: Invalidating analysis: NoOpModuleAnalysis
    170 ; CHECK-DO-INVALIDATE-MODULE-ANALYSIS-RESULTS: Running analysis: NoOpModuleAnalysis
    171 
    172 ; RUN: opt -disable-output -debug-pass-manager \
    173 ; RUN:     -passes='cgscc(require<no-op-cgscc>,require<no-op-cgscc>,require<no-op-cgscc>)' %s 2>&1 \
    174 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-CACHE-CGSCC-ANALYSIS-RESULTS
    175 ; CHECK-DO-CACHE-CGSCC-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    176 ; CHECK-DO-CACHE-CGSCC-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    177 ; CHECK-DO-CACHE-CGSCC-ANALYSIS-RESULTS: Running analysis: NoOpCGSCCAnalysis
    178 ; CHECK-DO-CACHE-CGSCC-ANALYSIS-RESULTS-NOT: Running analysis: NoOpCGSCCAnalysis
    179 
    180 ; RUN: opt -disable-output -debug-pass-manager \
    181 ; RUN:     -passes='cgscc(require<no-op-cgscc>,invalidate<no-op-cgscc>,require<no-op-cgscc>)' %s 2>&1 \
    182 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS
    183 ; CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    184 ; CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    185 ; CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS: Running analysis: NoOpCGSCCAnalysis
    186 ; CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS: Invalidating analysis: NoOpCGSCCAnalysis
    187 ; CHECK-DO-INVALIDATE-CGSCC-ANALYSIS-RESULTS: Running analysis: NoOpCGSCCAnalysis
    188 
    189 ; RUN: opt -disable-output -debug-pass-manager \
    190 ; RUN:     -passes='function(require<no-op-function>,require<no-op-function>,require<no-op-function>)' %s 2>&1 \
    191 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-CACHE-FUNCTION-ANALYSIS-RESULTS
    192 ; CHECK-DO-CACHE-FUNCTION-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    193 ; CHECK-DO-CACHE-FUNCTION-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    194 ; CHECK-DO-CACHE-FUNCTION-ANALYSIS-RESULTS: Running analysis: NoOpFunctionAnalysis
    195 ; CHECK-DO-CACHE-FUNCTION-ANALYSIS-RESULTS-NOT: Running analysis: NoOpFunctionAnalysis
    196 
    197 ; RUN: opt -disable-output -debug-pass-manager \
    198 ; RUN:     -passes='function(require<no-op-function>,invalidate<no-op-function>,require<no-op-function>)' %s 2>&1 \
    199 ; RUN:     | FileCheck %s --check-prefix=CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS
    200 ; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Starting llvm::Module pass manager run
    201 ; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Running pass: RequireAnalysisPass
    202 ; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Running analysis: NoOpFunctionAnalysis
    203 ; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Invalidating analysis: NoOpFunctionAnalysis
    204 ; CHECK-DO-INVALIDATE-FUNCTION-ANALYSIS-RESULTS: Running analysis: NoOpFunctionAnalysis
    205 
    206 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    207 ; 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 \
    208 ; RUN:     | FileCheck %s --check-prefix=CHECK-INVALIDATE-ALL
    209 ; CHECK-INVALIDATE-ALL: Starting llvm::Module pass manager run
    210 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    211 ; CHECK-INVALIDATE-ALL: Running analysis: NoOpModuleAnalysis
    212 ; CHECK-INVALIDATE-ALL: Starting llvm::Module pass manager run
    213 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    214 ; CHECK-INVALIDATE-ALL-NOT: Running analysis: NoOpModuleAnalysis
    215 ; CHECK-INVALIDATE-ALL: Starting llvm::Function pass manager run
    216 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    217 ; CHECK-INVALIDATE-ALL: Running analysis: NoOpFunctionAnalysis
    218 ; CHECK-INVALIDATE-ALL: Running pass: InvalidateAllAnalysesPass
    219 ; CHECK-INVALIDATE-ALL: Invalidating analysis: NoOpFunctionAnalysis
    220 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    221 ; CHECK-INVALIDATE-ALL: Running analysis: NoOpFunctionAnalysis
    222 ; CHECK-INVALIDATE-ALL: Finished llvm::Function pass manager run
    223 ; CHECK-INVALIDATE-ALL: Invalidating analysis: NoOpModuleAnalysis
    224 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    225 ; CHECK-INVALIDATE-ALL: Running analysis: NoOpModuleAnalysis
    226 ; CHECK-INVALIDATE-ALL: Finished llvm::Module pass manager run
    227 ; CHECK-INVALIDATE-ALL-NOT: Invalidating analysis: NoOpModuleAnalysis
    228 ; CHECK-INVALIDATE-ALL: Running pass: RequireAnalysisPass
    229 ; CHECK-INVALIDATE-ALL-NOT: Running analysis: NoOpModuleAnalysis
    230 ; CHECK-INVALIDATE-ALL: Finished llvm::Module pass manager run
    231 
    232 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    233 ; 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 \
    234 ; RUN:     | FileCheck %s --check-prefix=CHECK-INVALIDATE-ALL-CG
    235 ; CHECK-INVALIDATE-ALL-CG: Starting llvm::Module pass manager run
    236 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    237 ; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpModuleAnalysis
    238 ; CHECK-INVALIDATE-ALL-CG: Starting llvm::Module pass manager run
    239 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    240 ; CHECK-INVALIDATE-ALL-CG-NOT: Running analysis: NoOpModuleAnalysis
    241 ; CHECK-INVALIDATE-ALL-CG: Starting CGSCC pass manager run
    242 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    243 ; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpCGSCCAnalysis
    244 ; CHECK-INVALIDATE-ALL-CG: Starting llvm::Function pass manager run
    245 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    246 ; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpFunctionAnalysis
    247 ; CHECK-INVALIDATE-ALL-CG: Running pass: InvalidateAllAnalysesPass
    248 ; CHECK-INVALIDATE-ALL-CG: Invalidating analysis: NoOpFunctionAnalysis
    249 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    250 ; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpFunctionAnalysis
    251 ; CHECK-INVALIDATE-ALL-CG: Finished llvm::Function pass manager run
    252 ; CHECK-INVALIDATE-ALL-CG-NOT: Running analysis: NoOpFunctionAnalysis
    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 CGSCC pass manager run
    257 ; CHECK-INVALIDATE-ALL-CG-NOT: Invalidating analysis: NoOpCGSCCAnalysis
    258 ; CHECK-INVALIDATE-ALL-CG: Invalidating analysis: NoOpModuleAnalysis
    259 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    260 ; CHECK-INVALIDATE-ALL-CG: Running analysis: NoOpModuleAnalysis
    261 ; CHECK-INVALIDATE-ALL-CG: Finished llvm::Module pass manager run
    262 ; CHECK-INVALIDATE-ALL-CG-NOT: Invalidating analysis: NoOpModuleAnalysis
    263 ; CHECK-INVALIDATE-ALL-CG: Running pass: RequireAnalysisPass
    264 ; CHECK-INVALIDATE-ALL-CG-NOT: Running analysis: NoOpModuleAnalysis
    265 ; CHECK-INVALIDATE-ALL-CG: Finished llvm::Module pass manager run
    266 
    267 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    268 ; RUN:     -passes='require<targetlibinfo>,invalidate<all>,require<targetlibinfo>' \
    269 ; RUN:     | FileCheck %s --check-prefix=CHECK-TLI
    270 ; CHECK-TLI: Starting llvm::Module pass manager run
    271 ; CHECK-TLI: Running pass: RequireAnalysisPass
    272 ; CHECK-TLI: Running analysis: TargetLibraryAnalysis
    273 ; CHECK-TLI: Running pass: InvalidateAllAnalysesPass
    274 ; CHECK-TLI-NOT: Invalidating analysis: TargetLibraryAnalysis
    275 ; CHECK-TLI: Running pass: RequireAnalysisPass
    276 ; CHECK-TLI-NOT: Running analysis: TargetLibraryAnalysis
    277 ; CHECK-TLI: Finished llvm::Module pass manager run
    278 
    279 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    280 ; RUN:     -passes='require<targetir>,invalidate<all>,require<targetir>' \
    281 ; RUN:     | FileCheck %s --check-prefix=CHECK-TIRA
    282 ; CHECK-TIRA: Starting llvm::Module pass manager run
    283 ; CHECK-TIRA: Running pass: RequireAnalysisPass
    284 ; CHECK-TIRA: Running analysis: TargetIRAnalysis
    285 ; CHECK-TIRA: Running pass: InvalidateAllAnalysesPass
    286 ; CHECK-TIRA-NOT: Invalidating analysis: TargetIRAnalysis
    287 ; CHECK-TIRA: Running pass: RequireAnalysisPass
    288 ; CHECK-TIRA-NOT: Running analysis: TargetIRAnalysis
    289 ; CHECK-TIRA: Finished llvm::Module pass manager run
    290 
    291 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    292 ; RUN:     -passes='require<domtree>' \
    293 ; RUN:     | FileCheck %s --check-prefix=CHECK-DT
    294 ; CHECK-DT: Starting llvm::Module pass manager run
    295 ; CHECK-DT: Running pass: RequireAnalysisPass
    296 ; CHECK-DT: Running analysis: DominatorTreeAnalysis
    297 ; CHECK-DT: Finished llvm::Module pass manager run
    298 
    299 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    300 ; RUN:     -passes='require<basic-aa>' \
    301 ; RUN:     | FileCheck %s --check-prefix=CHECK-BASIC-AA
    302 ; CHECK-BASIC-AA: Starting llvm::Module pass manager run
    303 ; CHECK-BASIC-AA: Running pass: RequireAnalysisPass
    304 ; CHECK-BASIC-AA: Running analysis: BasicAA
    305 ; CHECK-BASIC-AA: Finished llvm::Module pass manager run
    306 
    307 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    308 ; RUN:     -passes='require<aa>' -aa-pipeline='basic-aa' \
    309 ; RUN:     | FileCheck %s --check-prefix=CHECK-AA
    310 ; CHECK-AA: Starting llvm::Module pass manager run
    311 ; CHECK-AA: Running pass: RequireAnalysisPass
    312 ; CHECK-AA: Running analysis: AAManager
    313 ; CHECK-AA: Running analysis: BasicAA
    314 ; CHECK-AA: Finished llvm::Module pass manager run
    315 
    316 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    317 ; RUN:     -passes='require<aa>' -aa-pipeline='default' \
    318 ; RUN:     | FileCheck %s --check-prefix=CHECK-AA-DEFAULT
    319 ; CHECK-AA-DEFAULT: Starting llvm::Module pass manager run
    320 ; CHECK-AA-DEFAULT: Running pass: RequireAnalysisPass
    321 ; CHECK-AA-DEFAULT: Running analysis: AAManager
    322 ; CHECK-AA-DEFAULT: Running analysis: BasicAA
    323 ; CHECK-AA-DEFAULT: Running analysis: ScopedNoAliasAA
    324 ; CHECK-AA-DEFAULT: Running analysis: TypeBasedAA
    325 ; CHECK-AA-DEFAULT: Finished llvm::Module pass manager run
    326 
    327 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    328 ; RUN:     -passes='require<aa>,invalidate<domtree>,aa-eval' -aa-pipeline='basic-aa' \
    329 ; RUN:     | FileCheck %s --check-prefix=CHECK-AA-FUNCTION-INVALIDATE
    330 ; CHECK-AA-FUNCTION-INVALIDATE: Starting llvm::Function pass manager run
    331 ; CHECK-AA-FUNCTION-INVALIDATE: Running pass: RequireAnalysisPass
    332 ; CHECK-AA-FUNCTION-INVALIDATE: Running analysis: AAManager
    333 ; CHECK-AA-FUNCTION-INVALIDATE: Running analysis: BasicAA
    334 ; CHECK-AA-FUNCTION-INVALIDATE: Running pass: InvalidateAnalysisPass
    335 ; CHECK-AA-FUNCTION-INVALIDATE: Invalidating analysis: DominatorTreeAnalysis
    336 ; CHECK-AA-FUNCTION-INVALIDATE: Invalidating analysis: BasicAA
    337 ; CHECK-AA-FUNCTION-INVALIDATE: Invalidating analysis: AAManager
    338 ; CHECK-AA-FUNCTION-INVALIDATE: Running pass: AAEvaluator
    339 ; CHECK-AA-FUNCTION-INVALIDATE: Running analysis: AAManager
    340 ; CHECK-AA-FUNCTION-INVALIDATE: Running analysis: BasicAA
    341 ; CHECK-AA-FUNCTION-INVALIDATE: Finished llvm::Function pass manager run
    342 
    343 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    344 ; RUN:     -passes='require<globals-aa>,function(require<aa>),invalidate<globals-aa>,require<globals-aa>,function(aa-eval)' -aa-pipeline='globals-aa' \
    345 ; RUN:     | FileCheck %s --check-prefix=CHECK-AA-MODULE-INVALIDATE
    346 ; CHECK-AA-MODULE-INVALIDATE: Starting llvm::Module pass manager run
    347 ; CHECK-AA-MODULE-INVALIDATE: Running pass: RequireAnalysisPass
    348 ; CHECK-AA-MODULE-INVALIDATE: Running analysis: GlobalsAA
    349 ; CHECK-AA-MODULE-INVALIDATE: Starting llvm::Function pass manager run
    350 ; CHECK-AA-MODULE-INVALIDATE: Running pass: RequireAnalysisPass
    351 ; CHECK-AA-MODULE-INVALIDATE: Running analysis: AAManager
    352 ; CHECK-AA-MODULE-INVALIDATE: Finished llvm::Function pass manager run
    353 ; CHECK-AA-MODULE-INVALIDATE: Running pass: InvalidateAnalysisPass
    354 ; CHECK-AA-MODULE-INVALIDATE: Invalidating analysis: AAManager
    355 ; CHECK-AA-MODULE-INVALIDATE: Invalidating analysis: GlobalsAA
    356 ; CHECK-AA-MODULE-INVALIDATE: Running pass: RequireAnalysisPass
    357 ; CHECK-AA-MODULE-INVALIDATE: Running analysis: GlobalsAA
    358 ; CHECK-AA-MODULE-INVALIDATE: Starting llvm::Function pass manager run
    359 ; CHECK-AA-MODULE-INVALIDATE: Running pass: AAEvaluator
    360 ; CHECK-AA-MODULE-INVALIDATE: Running analysis: AAManager
    361 ; CHECK-AA-MODULE-INVALIDATE: Finished llvm::Function pass manager run
    362 ; CHECK-AA-MODULE-INVALIDATE: Finished llvm::Module pass manager run
    363 
    364 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    365 ; RUN:     -passes='require<memdep>' \
    366 ; RUN:     | FileCheck %s --check-prefix=CHECK-MEMDEP
    367 ; CHECK-MEMDEP: Starting llvm::Module pass manager run
    368 ; CHECK-MEMDEP: Running pass: RequireAnalysisPass
    369 ; CHECK-MEMDEP: Running analysis: MemoryDependenceAnalysis
    370 ; CHECK-MEMDEP: Finished llvm::Module pass manager run
    371 
    372 ; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
    373 ; RUN:     -passes='require<callgraph>' \
    374 ; RUN:     | FileCheck %s --check-prefix=CHECK-CALLGRAPH
    375 ; CHECK-CALLGRAPH: Starting llvm::Module pass manager run
    376 ; CHECK-CALLGRAPH: Running pass: RequireAnalysisPass
    377 ; CHECK-CALLGRAPH: Running analysis: CallGraphAnalysis
    378 ; CHECK-CALLGRAPH: Finished llvm::Module pass manager run
    379 
    380 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    381 ; RUN:     -passes='default<O0>' %s 2>&1 \
    382 ; RUN:     | FileCheck %s --check-prefix=CHECK-O0
    383 ; CHECK-O0: Starting llvm::Module pass manager run
    384 ; CHECK-O0-NEXT: Finished llvm::Module pass manager run
    385 
    386 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    387 ; RUN:     -passes='repeat<3>(no-op-module)' %s 2>&1 \
    388 ; RUN:     | FileCheck %s --check-prefix=CHECK-REPEAT-MODULE-PASS
    389 ; CHECK-REPEAT-MODULE-PASS: Starting llvm::Module pass manager run
    390 ; CHECK-REPEAT-MODULE-PASS-NEXT: Running pass: RepeatedPass
    391 ; CHECK-REPEAT-MODULE-PASS-NEXT: Starting llvm::Module pass manager run
    392 ; CHECK-REPEAT-MODULE-PASS-NEXT: Running pass: NoOpModulePass
    393 ; CHECK-REPEAT-MODULE-PASS-NEXT: Finished llvm::Module pass manager run
    394 ; CHECK-REPEAT-MODULE-PASS-NEXT: Starting llvm::Module pass manager run
    395 ; CHECK-REPEAT-MODULE-PASS-NEXT: Running pass: NoOpModulePass
    396 ; CHECK-REPEAT-MODULE-PASS-NEXT: Finished llvm::Module pass manager run
    397 ; CHECK-REPEAT-MODULE-PASS-NEXT: Starting llvm::Module pass manager run
    398 ; CHECK-REPEAT-MODULE-PASS-NEXT: Running pass: NoOpModulePass
    399 ; CHECK-REPEAT-MODULE-PASS-NEXT: Finished llvm::Module pass manager run
    400 ; CHECK-REPEAT-MODULE-PASS-NEXT: Finished llvm::Module pass manager run
    401 
    402 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    403 ; RUN:     -passes='cgscc(repeat<3>(no-op-cgscc))' %s 2>&1 \
    404 ; RUN:     | FileCheck %s --check-prefix=CHECK-REPEAT-CGSCC-PASS
    405 ; CHECK-REPEAT-CGSCC-PASS: Starting llvm::Module pass manager run
    406 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Running pass: ModuleToPostOrderCGSCCPassAdaptor
    407 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*(CGSCCAnalysisManager|AnalysisManager<.*LazyCallGraph::SCC.*>).*}},{{.*}}Module>
    408 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*(FunctionAnalysisManager|AnalysisManager<.*Function.*>).*}},{{.*}}Module>
    409 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Running analysis: LazyCallGraphAnalysis
    410 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Running analysis: TargetLibraryAnalysis
    411 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Starting CGSCC pass manager run
    412 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Running pass: RepeatedPass
    413 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Starting CGSCC pass manager run
    414 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Running pass: NoOpCGSCCPass
    415 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Finished CGSCC pass manager run
    416 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Starting CGSCC pass manager run
    417 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Running pass: NoOpCGSCCPass
    418 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Finished CGSCC pass manager run
    419 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Starting CGSCC pass manager run
    420 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Running pass: NoOpCGSCCPass
    421 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Finished CGSCC pass manager run
    422 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Finished CGSCC pass manager run
    423 ; CHECK-REPEAT-CGSCC-PASS-NEXT: Finished llvm::Module pass manager run
    424 
    425 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    426 ; RUN:     -passes='function(repeat<3>(no-op-function))' %s 2>&1 \
    427 ; RUN:     | FileCheck %s --check-prefix=CHECK-REPEAT-FUNCTION-PASS
    428 ; CHECK-REPEAT-FUNCTION-PASS: Starting llvm::Module pass manager run
    429 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Running pass: ModuleToFunctionPassAdaptor
    430 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}>
    431 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Starting llvm::Function pass manager run
    432 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Running pass: RepeatedPass
    433 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Starting llvm::Function pass manager run
    434 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Running pass: NoOpFunctionPass
    435 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Finished llvm::Function pass manager run
    436 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Starting llvm::Function pass manager run
    437 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Running pass: NoOpFunctionPass
    438 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Finished llvm::Function pass manager run
    439 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Starting llvm::Function pass manager run
    440 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Running pass: NoOpFunctionPass
    441 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Finished llvm::Function pass manager run
    442 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Finished llvm::Function pass manager run
    443 ; CHECK-REPEAT-FUNCTION-PASS-NEXT: Finished llvm::Module pass manager run
    444 
    445 ; RUN: opt -disable-output -disable-verify -debug-pass-manager \
    446 ; RUN:     -passes='loop(repeat<3>(no-op-loop))' %s 2>&1 \
    447 ; RUN:     | FileCheck %s --check-prefix=CHECK-REPEAT-LOOP-PASS
    448 ; CHECK-REPEAT-LOOP-PASS: Starting llvm::Module pass manager run
    449 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running pass: ModuleToFunctionPassAdaptor
    450 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}>
    451 ; CHECK-REPEAT-LOOP-PASS-NEXT: Starting llvm::Function pass manager run
    452 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running pass: FunctionToLoopPassAdaptor
    453 ; CHECK-REPEAT-LOOP-PASS-NEXT: Starting llvm::Function pass manager run
    454 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running pass: LoopSimplify
    455 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running analysis: LoopAnalysis
    456 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running analysis: DominatorTreeAnalysis
    457 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running analysis: AssumptionAnalysis
    458 ; CHECK-REPEAT-LOOP-PASS-NEXT: Invalidating all non-preserved analyses
    459 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running pass: LCSSAPass
    460 ; CHECK-REPEAT-LOOP-PASS-NEXT: Finished llvm::Function pass manager run
    461 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running analysis: AAManager
    462 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running analysis: TargetLibraryAnalysis
    463 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running analysis: ScalarEvolutionAnalysis
    464 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running analysis: TargetIRAnalysis
    465 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running analysis: InnerAnalysisManagerProxy<{{.*}}>
    466 ; CHECK-REPEAT-LOOP-PASS-NEXT: Starting Loop pass manager run
    467 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running pass: RepeatedPass
    468 ; CHECK-REPEAT-LOOP-PASS-NEXT: Starting Loop pass manager run
    469 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running pass: NoOpLoopPass
    470 ; CHECK-REPEAT-LOOP-PASS-NEXT: Finished Loop pass manager run
    471 ; CHECK-REPEAT-LOOP-PASS-NEXT: Starting Loop pass manager run
    472 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running pass: NoOpLoopPass
    473 ; CHECK-REPEAT-LOOP-PASS-NEXT: Finished Loop pass manager run
    474 ; CHECK-REPEAT-LOOP-PASS-NEXT: Starting Loop pass manager run
    475 ; CHECK-REPEAT-LOOP-PASS-NEXT: Running pass: NoOpLoopPass
    476 ; CHECK-REPEAT-LOOP-PASS-NEXT: Finished Loop pass manager run
    477 ; CHECK-REPEAT-LOOP-PASS-NEXT: Finished Loop pass manager run
    478 ; CHECK-REPEAT-LOOP-PASS-NEXT: Finished llvm::Function pass manager run
    479 ; CHECK-REPEAT-LOOP-PASS-NEXT: Invalidating all non-preserved analyses
    480 ; CHECK-REPEAT-LOOP-PASS-NEXT: Finished llvm::Module pass manager run
    481 
    482 define void @foo(i1 %x, i8* %p1, i8* %p2) {
    483 entry:
    484   store i8 42, i8* %p1
    485   br i1 %x, label %loop, label %exit
    486 
    487 loop:
    488   %tmp1 = load i8, i8* %p2
    489   br label %loop
    490 
    491 exit:
    492   ret void
    493 }
    494 
    495 declare void @bar()
    496