6fed85fadd99f4818b14bab0217becb31c2fa7ee
[oota-llvm.git] / test / Transforms / LoopStrengthReduce / dont_insert_redundant_ops.ll
1 ; Check that this test makes INDVAR and related stuff dead.
2 ; RUN: llvm-as < %s | opt -loop-reduce | llvm-dis | grep phi | wc -l | grep 2
3
4 ; XFAIL: *
5
6 declare bool %pred()
7
8 void %test1({ int, int }* %P) {
9         br label %Loop
10 Loop:
11         %INDVAR = phi int [0, %0], [%INDVAR2, %Loop]
12
13         %gep1 = getelementptr { int, int}* %P, int %INDVAR, uint 0
14         store int 0, int* %gep1
15
16         %gep2 = getelementptr { int, int}* %P, int %INDVAR, uint 1
17         store int 0, int* %gep2
18
19         %INDVAR2 = add int %INDVAR, 1
20         %cond = call bool %pred()
21         br bool %cond, label %Loop, label %Out
22 Out:
23         ret void
24 }
25
26 void %test2([2 x int]* %P) {
27         br label %Loop
28 Loop:
29         %INDVAR = phi int [0, %0], [%INDVAR2, %Loop]
30
31         %gep1 = getelementptr [2 x int]* %P, int %INDVAR, uint 0
32         store int 0, int* %gep1
33
34         %gep2 = getelementptr [2 x int]* %P, int %INDVAR, uint 1
35         store int 0, int* %gep2
36
37         %INDVAR2 = add int %INDVAR, 1
38         %cond = call bool %pred()
39         br bool %cond, label %Loop, label %Out
40 Out:
41         ret void
42 }