summaryrefslogtreecommitdiff
path: root/test/Transforms/CorrelatedExprs/2002-10-08-DominatorTest2.ll
blob: 0348e4011f5103bf82050f0c7c12c3a41d459cc5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
; Simple test to make sure dominators are updated properly
; RUN: llvm-upgrade < %s | llvm-as | opt -cee

implementation   ; Functions:

int %test(int %A, int %B, bool %c0) {
Start:		; No predecessors!
	%c1 = seteq int %A, %B		; <bool> [#uses=1]
	br bool %c1, label %Eq, label %Start_crit_edge

Start_crit_edge:		; preds = %Start
	br label %Loop

Eq:		; preds = %Start
	br label %Loop

Loop:		; preds = %Bottom, %Eq, %Start_crit_edge
	%Z = phi int [ %A, %Start_crit_edge ], [ %B, %Eq ];, [ %Z, %Bottom ]		; <int> [#uses=2]
	%c2 = setge int %A, %B		; <bool> [#uses=1]
	br bool %c2, label %Forwarded, label %Loop_crit_edge

Loop_crit_edge:		; preds = %Loop
	%X = seteq int %Z, 7
	br bool %X, label %Forwarded, label %Bottom

Forwarded:		; preds = %Loop
	%Z2 = phi int [ %Z, %Loop ], [%Z, %Loop_crit_edge]		; <int> [#uses=1]
	call int %test( int %Z, int %Z2, bool true )		; <int>:0 [#uses=0]
	br label %Bottom

Bottom:		; preds = %Forwarded, %Loop_crit_edge
	ret int %Z
	;br label %Loop
}