add the & back. I'm not sure why bill removed it.
[oota-llvm.git] / test / Transforms / LICM / scalar_promote.ll
1 ; RUN: llvm-upgrade < %s | llvm-as | opt  -licm -stats |& \
2 ; RUN:    grep {memory locations promoted to register}
3
4 %X = global int 7
5
6 void %testfunc(int %i) {
7         br label %Loop
8
9 Loop:
10         %j = phi uint [0, %0], [%Next, %Loop]
11
12         %x = load int* %X  ; Should promote this to a register inside of loop!
13         %x2 = add int %x, 1
14         store int %x2, int* %X
15
16         %Next = add uint %j, 1
17         %cond = seteq uint %Next, 0
18         br bool %cond, label %Out, label %Loop
19
20 Out:
21         ret void
22 }
23
24 void %testhard(int %i) {
25         br label %Loop
26 Loop:
27         %X1 = getelementptr int* %X, long 0
28         %A = load int* %X1 ; Aliases X, needs to be rewritten
29         %V = add int %A, 1
30         %X2 = getelementptr int* %X, long 0
31         store int %V, int* %X2
32         br bool false, label %Loop, label %Exit
33
34 Exit:
35         ret void
36
37 }