mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 03:02:36 +01:00
73f39e529d
-debug-pass is a legacy PM only option. Some tests checks that the pass returned that it made a change, which is not relevant to the NPM, since passes return PreservedAnalyses. Some tests check that passes are freed at the proper time, which is also not relevant to the NPM. Reviewed By: asbirlea Differential Revision: https://reviews.llvm.org/D87945
57 lines
1.5 KiB
LLVM
57 lines
1.5 KiB
LLVM
; RUN: opt < %s -debug-pass=Structure -indvars -gvn -indvars -enable-new-pm=0 2>&1 -S | FileCheck --check-prefix=CHECK --check-prefix=IR %s
|
|
; RUN: opt < %s -debug-pass-manager -passes='require<domtree>,loop(loop-simplifycfg),gvn,loop(indvars)' 2>&1 -S | FileCheck --check-prefix=NEW-PM --check-prefix=IR %s
|
|
|
|
; Check CFG-only analysis are preserved by SCCP by running it between 2
|
|
; loop-vectorize runs.
|
|
|
|
; CHECK: Dominator Tree Construction
|
|
; CHECK: Natural Loop Information
|
|
; CHECK: Canonicalize natural loops
|
|
; CHECK: LCSSA Verifier
|
|
; CHECK: Loop-Closed SSA Form Pass
|
|
; CHECK: Global Value Numbering
|
|
; CHECK-NOT: Dominator Tree Construction
|
|
; CHECK-NOT: Natural Loop Information
|
|
; CHECK: Canonicalize natural loops
|
|
|
|
; NEW-PM-DAG: Running analysis: LoopAnalysis on test
|
|
; NEW-PM-DAG: Running analysis: DominatorTreeAnalysis on test
|
|
; NEW-PM: Running pass: GVN on test
|
|
; NEW-PM-NOT: Running analysis: LoopAnalysis on test
|
|
; NEW-PM-NOT: Running analysis: DominatorTreeAnalysis on test
|
|
|
|
declare i1 @cond()
|
|
declare void @dostuff()
|
|
|
|
define i32 @test() {
|
|
; IR-LABEL: define i32 @test()
|
|
; IR-LABEL: header:
|
|
; IR: br i1 false, label %then, label %latch
|
|
; IR-LABEL: then:
|
|
; IR-NEXT: call void @dostuff()
|
|
; IR-NEXT: br label %latch
|
|
entry:
|
|
%res = add i32 1, 10
|
|
br label %header
|
|
|
|
header:
|
|
%iv = phi i32 [ %res, %entry ], [ 0, %latch ]
|
|
%ic = icmp eq i32 %res, 99
|
|
br i1 %ic, label %then, label %latch
|
|
|
|
then:
|
|
br label %then.2
|
|
|
|
then.2:
|
|
call void @dostuff()
|
|
br label %latch
|
|
|
|
|
|
latch:
|
|
%ec = call i1 @cond()
|
|
br i1 %ec, label %exit, label %header
|
|
|
|
exit:
|
|
ret i32 %iv
|
|
}
|