blob: 2a975d52cc265d37b4f41e21c5c426e2fa9af0cb [file] [log] [blame]
Tobias Grosserd1e33e72015-02-19 05:31:07 +00001; RUN: opt %loadPolly -polly-detect-unprofitable -polly-scops -analyze -polly-allow-unsigned < %s | FileCheck %s
Tobias Grosserbfbc3692015-01-09 00:01:33 +00002
3; void f(int a[], int N, unsigned P) {
4; int i;
5; for (i = 0; i < N; ++i)
6; if (P > 42)
7; a[i] = i;
8; }
9
10target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
11target triple = "x86_64-unknown-linux-gnu"
12
13define void @f(i64* nocapture %a, i64 %N, i64 %P) nounwind {
14entry:
15 br label %bb
16
17bb:
18 %i = phi i64 [ 0, %entry ], [ %i.inc, %bb.backedge ]
19 %brcond = icmp uge i64 %P, 42
20 br i1 %brcond, label %store, label %bb.backedge
21
22store:
23 %scevgep = getelementptr i64* %a, i64 %i
24 store i64 %i, i64* %scevgep
25 br label %bb.backedge
26
27bb.backedge:
28 %i.inc = add nsw i64 %i, 1
29 %exitcond = icmp eq i64 %i.inc, %N
30 br i1 %exitcond, label %return, label %bb
31
32return:
33 ret void
34}
35
36; CHECK: Assumed Context:
37; CHECK: { : }
38
39; CHECK: Stmt_store
40; CHECK: Domain :=
41; CHECK: [N, P] -> { Stmt_store[i0] :
42; CHECK: i0 >= 0 and i0 <= -1 + N and P >= 42
43; CHECK: };
44; CHECK: Scattering :=
Johannes Doerfert92820762015-02-02 13:45:54 +000045; CHECK: [N, P] -> { Stmt_store[i0] -> [i0] };
Tobias Grosserbfbc3692015-01-09 00:01:33 +000046; CHECK: MustWriteAccess := [Reduction Type: NONE]
47; CHECK: [N, P] -> { Stmt_store[i0] -> MemRef_a[i0] };