Fix Polly
[polly-mirror.git] / test / ScopInfo / invariant_load_canonicalize_array_baseptrs_4c.ll
blob6f71ff0a73d320b8a85d8a76dcb6b1c7ced2125c
1 ; RUN: opt %loadPolly -polly-scops -analyze < %s \
2 ; RUN:  -polly-invariant-load-hoisting \
3 ; RUN:  | FileCheck %s
5 ; Verify that arrays with different element types are not coalesced.
7 ; CHECK:      Statements {
8 ; CHECK-NEXT:   Stmt_body1
9 ; CHECK-NEXT:         Domain :=
10 ; CHECK-NEXT:             { Stmt_body1[i0] : 0 <= i0 <= 1022 };
11 ; CHECK-NEXT:         Schedule :=
12 ; CHECK-NEXT:             { Stmt_body1[i0] -> [i0, 0] };
13 ; CHECK-NEXT:         MustWriteAccess :=        [Reduction Type: NONE] [Scalar: 0]
14 ; CHECK-NEXT:             { Stmt_body1[i0] -> MemRef_baseB[0] };
15 ; CHECK-NEXT:   Stmt_body2
16 ; CHECK-NEXT:         Domain :=
17 ; CHECK-NEXT:             { Stmt_body2[i0] : 0 <= i0 <= 1022 };
18 ; CHECK-NEXT:         Schedule :=
19 ; CHECK-NEXT:             { Stmt_body2[i0] -> [i0, 1] };
20 ; CHECK-NEXT:         MustWriteAccess :=        [Reduction Type: NONE] [Scalar: 0]
21 ; CHECK-NEXT:             { Stmt_body2[i0] -> MemRef_baseA[0] };
22 ; CHECK-NEXT: }
24 define void @foo(float** %A, i64 %n, i64 %m) {
25 start:
26   br label %loop
28 loop:
29   %indvar = phi i64 [0, %start], [%indvar.next, %latch]
30   %indvar.next = add nsw i64 %indvar, 1
31   %icmp = icmp slt i64 %indvar.next, 1024
32   br i1 %icmp, label %body1, label %exit
34 body1:
35   %baseB = load float*, float** %A
36   store float 42.0, float* %baseB
37   br label %body2
39 body2:
40   %baseA = load float*, float** %A
41   %ptrcast = bitcast float* %baseA to i64*
42   store i64 42, i64* %ptrcast
43   br label %latch
45 latch:
46   br label %loop
48 exit:
49   ret void