Fix Polly
[polly-mirror.git] / test / ScopDetect / keep_going_expansion.ll
blobef88ce152ff7424b82dae34875fbfb8af885870e
1 ; RUN: opt %loadPolly -basicaa -polly-detect-track-failures -polly-detect-keep-going -polly-detect -analyze < %s | FileCheck %s
3 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
5 define i32 @a(i32 %n, i32* noalias %A, i32* noalias %B) #0 {
6 entry:
7   br label %entry.split
9 entry.split:                                      ; preds = %entry
10   br label %for.body
12 for.cond2.preheader:                              ; preds = %for.body
13   br label %for.body4
15 for.body:                                         ; preds = %entry.split, %for.body
16   %indvar = phi i64 [ 0, %entry.split ], [ %indvar.next, %for.body ]
17   %j.02 = trunc i64 %indvar to i32
18   %arrayidx = getelementptr i32, i32* %B, i64 %indvar
19   store i32 %j.02, i32* %arrayidx, align 4
20   %indvar.next = add i64 %indvar, 1
21   %exitcond3 = icmp ne i64 %indvar.next, 32
22   br i1 %exitcond3, label %for.body, label %for.cond2.preheader
24 for.body4:                                        ; preds = %for.cond2.preheader, %for.body4
25   %0 = phi i32 [ 0, %for.cond2.preheader ], [ %1, %for.body4 ]
26   %mul = mul i32 %n, %0
27   %idxprom5 = sext i32 %mul to i64
28   %arrayidx6 = getelementptr inbounds i32, i32* %A, i64 %idxprom5
29   store i32 %0, i32* %arrayidx6, align 4
30   %1 = add nsw i32 %0, 1
31   %exitcond = icmp ne i32 %1, 32
32   br i1 %exitcond, label %for.body4, label %for.end9
34 for.end9:                                         ; preds = %for.body4
35   %idxprom10 = sext i32 %n to i64
36   %arrayidx11 = getelementptr inbounds i32, i32* %A, i64 %idxprom10
37   %2 = load i32, i32* %arrayidx11, align 4
38   %idxprom12 = sext i32 %n to i64
39   %arrayidx13 = getelementptr inbounds i32, i32* %B, i64 %idxprom12
40   %3 = load i32, i32* %arrayidx13, align 4
41   %add = add nsw i32 %3, %2
42   ret i32 %add
45 ; CHECK: Valid Region for Scop: for.body => for.body4