summaryrefslogtreecommitdiffstats
path: root/polly
diff options
context:
space:
mode:
authorTobias Grosser <grosser@fim.uni-passau.de>2013-05-31 17:44:38 +0000
committerTobias Grosser <grosser@fim.uni-passau.de>2013-05-31 17:44:38 +0000
commit93324aef1788470b8640c456492f745fac93fc8b (patch)
tree3b8a66ffef7db6109462eacf8d0b2f480257c7fc /polly
parent39d514108510696388d53a05c653e80accf61155 (diff)
downloadbcm5719-llvm-93324aef1788470b8640c456492f745fac93fc8b.tar.gz
bcm5719-llvm-93324aef1788470b8640c456492f745fac93fc8b.zip
Test that independent block pass does not transform induction variables
The original test case showed a problem with the independet blocks pass and we decided to XFAIL it for now. Unfortunately the failure is not detected if we build without asserts and the verification of the independent block pass is not run. This change tests now for the actual reason of the failure and should trigger even in a non asserts build. We did not yet solve the underlying bug, but this should at least make the test suite behavior consistent. llvm-svn: 183025
Diffstat (limited to 'polly')
-rw-r--r--polly/test/IndependentBlocks/indvars.ll39
-rw-r--r--polly/test/Isl/CodeGen/scevcodegen-1.ll37
2 files changed, 39 insertions, 37 deletions
diff --git a/polly/test/IndependentBlocks/indvars.ll b/polly/test/IndependentBlocks/indvars.ll
new file mode 100644
index 00000000000..aa096f46128
--- /dev/null
+++ b/polly/test/IndependentBlocks/indvars.ll
@@ -0,0 +1,39 @@
+; RUN: opt %loadPolly -polly-independent -polly-codegen-scev %s | FileCheck %s
+; XFAIL: *
+;
+; Ensure that the independent block pass does not invalidate the induction
+; variable here.
+target 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-n8:16:32:64"
+target triple = "x86_64-unknown-linux-gnu"
+
+define void @main() nounwind {
+entry:
+ br label %for.i
+
+for.i:
+ %indvar.i = phi i64 [ 0, %entry ], [ %indvar.next.i, %for.i.backedge ]
+ br i1 true, label %for.j.preheader, label %for.j2
+
+for.j.preheader:
+ br label %for.j
+
+for.j:
+ %indvar.j = phi i64 [ %indvar.next.j, %for.j ], [ 0, %for.j.preheader ]
+ %indvar.next.j = add i64 %indvar.j, 1
+ %exitcond.j = icmp eq i64 %indvar.next.j, 0
+ br i1 %exitcond.j, label %for.j2, label %for.j
+
+for.j2:
+ fence seq_cst
+ br label %for.i.backedge
+
+for.i.backedge:
+ %indvar.next.i = add i64 %indvar.i, 1
+ %exitcond.i = icmp eq i64 %indvar.next.i, 2048
+ br i1 %exitcond.i, label %for.i, label %.end
+
+.end:
+ ret void
+}
+
+; CHECK: %indvar.j = phi i64 [ %indvar.next.j, %for.j ], [ 0, %for.j.preheader ]
diff --git a/polly/test/Isl/CodeGen/scevcodegen-1.ll b/polly/test/Isl/CodeGen/scevcodegen-1.ll
deleted file mode 100644
index d492d714e69..00000000000
--- a/polly/test/Isl/CodeGen/scevcodegen-1.ll
+++ /dev/null
@@ -1,37 +0,0 @@
-; RUN: opt %loadPolly -polly-codegen-isl -polly-codegen-scev %s
-; -polly-independent causes: Cannot generate independent blocks
-;
-; XFAIL:*
-target 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-n8:16:32:64"
-target triple = "x86_64-unknown-linux-gnu"
-
-define void @main() nounwind {
-.split:
- br label %.start
-
-.start:
- %indvar15 = phi i64 [ 0, %.split ], [ %indvar.next16, %.loopexit ]
- %tmp25 = add i64 %indvar15, 1
- br i1 true, label %.preheader, label %.loop2
-
-.preheader:
- br label %.loop1
-
-.loop1:
- %indvar33 = phi i64 [ %indvar.next34, %.loop1 ], [ 0, %.preheader ]
- %indvar.next34 = add i64 %indvar33, 1
- %exitcond40 = icmp eq i64 %indvar.next34, 0
- br i1 %exitcond40, label %.loop2, label %.loop1
-
-.loop2:
- %exitcond26.old = icmp eq i64 undef, %tmp25
- br i1 false, label %.loopexit, label %.loop2
-
-.loopexit:
- %indvar.next16 = add i64 %indvar15, 1
- %exitcond53 = icmp eq i64 %indvar.next16, 2048
- br i1 %exitcond53, label %.start, label %.end
-
-.end:
- ret void
-}
OpenPOWER on IntegriCloud