1; RUN: opt %loadPolly -polly-detect -polly-allow-nonaffine-branches \
2; RUN:     -analyze < %s | FileCheck %s
3;
4;    void f(float *A) {
5;      for (int i = 0; i < 1024; i++)
6;        if (A[i] == A[i - 1])
7;          A[i]++;
8;    }
9;
10; CHECK: Valid Region for Scop: bb1 => bb14
11target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
12
13define void @f(float* %A) {
14bb:
15  br label %bb1
16
17bb1:                                              ; preds = %bb13, %bb
18  %indvars.iv = phi i64 [ %indvars.iv.next, %bb13 ], [ 0, %bb ]
19  %exitcond = icmp ne i64 %indvars.iv, 1024
20  br i1 %exitcond, label %bb2, label %bb14
21
22bb2:                                              ; preds = %bb1
23  %tmp = getelementptr inbounds float, float* %A, i64 %indvars.iv
24  %tmp3 = load float, float* %tmp, align 4
25  %tmp4 = add nsw i64 %indvars.iv, -1
26  %tmp5 = getelementptr inbounds float, float* %A, i64 %tmp4
27  %tmp6 = load float, float* %tmp5, align 4
28  %tmp7 = fcmp oeq float %tmp3, %tmp6
29  br i1 %tmp7, label %bb8, label %bb12
30
31bb8:                                              ; preds = %bb2
32  %tmp9 = getelementptr inbounds float, float* %A, i64 %indvars.iv
33  %tmp10 = load float, float* %tmp9, align 4
34  %tmp11 = fadd float %tmp10, 1.000000e+00
35  store float %tmp11, float* %tmp9, align 4
36  br label %bb12
37
38bb12:                                             ; preds = %bb8, %bb2
39  br label %bb13
40
41bb13:                                             ; preds = %bb12
42  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
43  br label %bb1
44
45bb14:                                             ; preds = %bb1
46  ret void
47}
48