summaryrefslogtreecommitdiff
path: root/test/Transforms/LICM/sink_only_some_exits.ll
blob: 6415c8a1f0dd7aa28a53e20a673741376c438b4f (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
; This testcase checks to make sure we can sink values which are only live on
; some exits out of the loop, and that we can do so without breaking dominator
; info.
;
; RUN: llvm-as < %s | opt -licm | llvm-dis | %prcontext add 1 | grep exit2:

implementation   ; Functions:

int %test(bool %C1, bool %C2, int *%P, int* %Q) {
Entry:
	br label %Loop

Loop:
	br bool %C1, label %Cont, label %exit1
Cont:
	%X = load int* %P
	store int %X, int* %Q
 	%V = add int %X, 1
	br bool %C2, label %Loop, label %exit2

exit1:
	ret int 0
exit2:
	ret int %V
}