summaryrefslogtreecommitdiffstats
path: root/polly/test/DeadCodeElimination/non-affine-but-modulo-and-affine-mix.ll
diff options
context:
space:
mode:
Diffstat (limited to 'polly/test/DeadCodeElimination/non-affine-but-modulo-and-affine-mix.ll')
-rw-r--r--polly/test/DeadCodeElimination/non-affine-but-modulo-and-affine-mix.ll54
1 files changed, 54 insertions, 0 deletions
diff --git a/polly/test/DeadCodeElimination/non-affine-but-modulo-and-affine-mix.ll b/polly/test/DeadCodeElimination/non-affine-but-modulo-and-affine-mix.ll
new file mode 100644
index 00000000000..85638a3169b
--- /dev/null
+++ b/polly/test/DeadCodeElimination/non-affine-but-modulo-and-affine-mix.ll
@@ -0,0 +1,54 @@
+; RUN: opt %loadPolly -polly-dce -polly-ast -analyze < %s | FileCheck %s
+;
+; void f(int *A) {
+; for (int i = 0; i < 1024; i++)
+; S1: A[i % 2] = i;
+; for (int i = 0; i < 1024; i++)
+; S2: A[i2] = i;
+; }
+;
+; CHECK: for (int c1 = 0; c1 <= 1023; c1 += 1)
+; CHECK: Stmt_S2(c1);
+
+target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
+
+define void @f(i32* %A) {
+entry:
+ br label %for.cond
+
+for.cond:
+ %i.0 = phi i32 [ 0, %entry ], [ %inc, %for.inc ]
+ %exitcond = icmp ne i32 %i.0, 1024
+ br i1 %exitcond, label %S1, label %next
+
+S1:
+ %rem = srem i32 %i.0, 2
+ %arrayidx = getelementptr inbounds i32* %A, i32 %rem
+ store i32 %i.0, i32* %arrayidx, align 4
+ br label %for.inc
+
+for.inc:
+ %inc = add nsw i32 %i.0, 1
+ br label %for.cond
+
+next:
+ br label %for.cond.2
+
+for.cond.2:
+ %i.2 = phi i32 [ 0, %next ], [ %inc.2, %for.inc.2 ]
+ %exitcond.2 = icmp ne i32 %i.2, 1024
+ br i1 %exitcond.2, label %S2, label %for.end
+
+S2:
+ %arrayidx.2 = getelementptr inbounds i32* %A, i32 %i.2
+ store i32 %i.2, i32* %arrayidx.2, align 4
+ br label %for.inc.2
+
+for.inc.2:
+ %inc.2 = add nsw i32 %i.2, 1
+ br label %for.cond.2
+
+for.end:
+ ret void
+}
+
OpenPOWER on IntegriCloud