| ; RUN: opt < %s -disable-output -passes='default<O2>' -time-passes 2>&1 | FileCheck %s --check-prefix=TIME | 
 | ; | 
 | ; For new pass manager, check that -time-passes-per-run emit one report for each pass run. | 
 | ; RUN: opt < %s -disable-output -passes='coro-cleanup,function(instcombine,instcombine,loop-mssa(licm))' -time-passes-per-run 2>&1 | FileCheck %s --check-prefix=TIME --check-prefix=TIME-PER-RUN --check-prefix=TIME-PER-RUN-CORO | 
 | ; RUN: opt < %s -disable-output -passes='instcombine,loop-mssa(licm),instcombine,loop-mssa(licm)' -time-passes-per-run 2>&1 | FileCheck %s --check-prefix=TIME --check-prefix=TIME-PER-RUN -check-prefix=TIME-DOUBLE-LICM | 
 | ; | 
 | ; For new pass manager, check that -time-passes emit one report for each pass. | 
 | ; RUN: opt < %s -disable-output -passes='coro-cleanup,function(instcombine,instcombine,loop-mssa(licm))' -time-passes 2>&1 | FileCheck %s --check-prefixes=TIME,TIME-PER-PASS,TIME-PER-PASS-CORO | 
 | ; RUN: opt < %s -disable-output -passes='instcombine,loop-mssa(licm),instcombine,loop-mssa(licm)' -time-passes 2>&1 | FileCheck %s --check-prefixes=TIME,TIME-PER-PASS | 
 | ; | 
 | ; The following 2 test runs verify -info-output-file interaction (default goes to stderr, '-' goes to stdout). | 
 | ; RUN: opt < %s -disable-output -passes='default<O2>' -time-passes -info-output-file='-' 2>/dev/null | FileCheck %s --check-prefix=TIME | 
 | ; | 
 | ; RUN: rm -f %t; opt < %s -disable-output -passes='default<O2>' -time-passes -info-output-file=%t | 
 | ; RUN:   cat %t | FileCheck %s --check-prefix=TIME | 
 | ; | 
 | ; TIME: Analysis execution timing report | 
 | ; TIME: Total Execution Time: | 
 | ; TIME: Name | 
 | ; TIME-PER-RUN-DAG:      ScalarEvolutionAnalysis | 
 | ; TIME-PER-RUN-DAG:      LoopAnalysis | 
 | ; TIME-PER-RUN-DAG:      DominatorTreeAnalysis | 
 | ; TIME-PER-RUN-DAG:      TargetLibraryAnalysis | 
 | ; TIME-PER-PASS-DAG:   ScalarEvolutionAnalysis | 
 | ; TIME-PER-PASS-DAG:   LoopAnalysis | 
 | ; TIME-PER-PASS-DAG:   DominatorTreeAnalysis | 
 | ; TIME-PER-PASS-DAG:   TargetLibraryAnalysis | 
 | ; TIME-PER-PASS-NOT:   ScalarEvolutionAnalysis # | 
 | ; TIME-PER-PASS-NOT:   LoopAnalysis # | 
 | ; TIME-PER-PASS-NOT:   DominatorTreeAnalysis # | 
 | ; TIME-PER-PASS-NOT:   TargetLibraryAnalysis # | 
 | ; TIME: Total{{$}} | 
 |  | 
 | ; TIME: Pass execution timing report | 
 | ; TIME: Total Execution Time: | 
 | ; TIME: Name | 
 | ; TIME-PER-RUN-DAG:      InstCombinePass #1 | 
 | ; TIME-PER-RUN-DAG:      InstCombinePass #2 | 
 | ; TIME-PER-RUN-DAG:      InstCombinePass #3 | 
 | ; TIME-PER-RUN-DAG:      InstCombinePass #4 | 
 | ; TIME-PER-RUN-DAG:      LICMPass #1 | 
 | ; TIME-PER-RUN-DAG:      LICMPass #2 | 
 | ; TIME-PER-RUN-DAG:      LICMPass #3 | 
 | ; TIME-DOUBLE-LICM-DAG:      LICMPass #4 | 
 | ; TIME-DOUBLE-LICM-DAG:      LICMPass #5 | 
 | ; TIME-DOUBLE-LICM-DAG:      LICMPass #6 | 
 | ; TIME-PER-RUN-DAG:      LCSSAPass | 
 | ; TIME-PER-RUN-DAG:      LoopSimplifyPass | 
 | ; TIME-PER-RUN-DAG:      VerifierPass | 
 | ; TIME-PER-RUN-CORO-DAG:     SimplifyCFGPass #1 | 
 | ; TIME-PER-RUN-CORO-DAG:     CoroCleanupPass #1 | 
 | ; TIME-PER-PASS-DAG:   InstCombinePass | 
 | ; TIME-PER-PASS-DAG:   LICMPass | 
 | ; TIME-PER-PASS-DAG:   LCSSAPass | 
 | ; TIME-PER-PASS-DAG:   LoopSimplifyPass | 
 | ; TIME-PER-PASS-DAG:   VerifierPass | 
 | ; TIME-PER-PASS-CORO-DAG:    SimplifyCFGPass | 
 | ; TIME-PER-PASS-CORO-DAG:    CoroCleanupPass | 
 | ; TIME-PER-PASS-NOT:   InstCombinePass # | 
 | ; TIME-PER-PASS-NOT:   LICMPass # | 
 | ; TIME-PER-PASS-NOT:   LCSSAPass # | 
 | ; TIME-PER-PASS-NOT:   LoopSimplifyPass # | 
 | ; TIME-PER-PASS-NOT:   VerifierPass # | 
 | ; TIME: Total{{$}} | 
 |  | 
 | define i32 @foo() { | 
 |   %res = add i32 5, 4 | 
 |   br label %loop1 | 
 | loop1: | 
 |   br i1 false, label %loop1, label %end | 
 | end: | 
 |   ret i32 %res | 
 | } | 
 |  | 
 | define void @bar_with_loops() { | 
 |   br label %loop1 | 
 | loop1: | 
 |   br i1 false, label %loop1, label %loop2 | 
 | loop2: | 
 |   br i1 true, label %loop2, label %end | 
 | end: | 
 |   ret void | 
 |  | 
 | } | 
 |  | 
 | define void @baz_coro() { | 
 |   %unused = call ptr @llvm.coro.begin(token none, ptr null) | 
 |   ret void | 
 | } | 
 |  | 
 | declare ptr @llvm.coro.begin(token, ptr) |