1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
llvm-mirror/test/Transforms/SCCP/ipsccp-preserve-analysis.ll
Arthur Eubanks b987f39d75 [NewPM] Hide pass manager debug logging behind -debug-pass-manager-verbose
Printing pass manager invocations is fairly verbose and not super
useful.

This allows us to remove DebugLogging from pass managers and PassBuilder
since all logging (aside from analysis managers) goes through
instrumentation now.

This has the downside of never being able to print the top level pass
manager via instrumentation, but that seems like a minor downside.

Reviewed By: ychen

Differential Revision: https://reviews.llvm.org/D101797
2021-05-07 21:51:47 -07:00

52 lines
1.5 KiB
LLVM

; Basic test to check that DominatorTreeAnalysis is preserved by IPSCCP and
; the following analysis can re-use it. The test contains two trivial functions
; IPSCCP can simplify, so we can test the case where IPSCCP makes changes.
; RUN: opt -disable-verify -debug-pass-manager \
; RUN: -passes='function(require<domtree>,require<postdomtree>),ipsccp,function(require<domtree>,require<postdomtree>)' -S %s 2>&1 \
; RUN: | FileCheck -check-prefixes='IR,NEW-PM' %s
; RUN: opt -passes='function(require<postdomtree>),ipsccp,function(verify<domtree>)' -S %s | FileCheck -check-prefixes='IR' %s
; NEW-PM: Running analysis: DominatorTreeAnalysis on f1
; NEW-PM: Running analysis: PostDominatorTreeAnalysis on f1
; NEW-PM: Running analysis: DominatorTreeAnalysis on f2
; NEW-PM: Running analysis: PostDominatorTreeAnalysis on f2
; NEW-PM: Running pass: IPSCCPPass
; NEW-PM-DAG: Running analysis: AssumptionAnalysis on f1
; NEW-PM-DAG: Running analysis: AssumptionAnalysis on f2
; NEW-PM-NOT: Running analysis: AssumptionAnalysis
; IR-LABEL: @f1
; IR-LABEL: entry:
; IR-NEXT: br label %bb2
; IR-LABEL: bb2:
; IR-NEXT: undef
; IR-LABEL: @f2
; IR-NOT: icmp
; IR: br label %bbtrue
; IR-LABEL: bbtrue:
; IR-NEXT: ret i32 0
define internal i32 @f1() readnone {
entry:
br i1 false, label %bb1, label %bb2
bb1:
ret i32 10
bb2:
ret i32 10
}
define i32 @f2(i32 %n) {
%i = call i32 @f1()
%cmp = icmp eq i32 %i, 10
br i1 %cmp, label %bbtrue, label %bbfalse
bbtrue:
ret i32 0
bbfalse:
%res = add i32 %n, %i
ret i32 %res
}