summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--polly/lib/Support/SCEVValidator.cpp2
-rw-r--r--polly/test/Cloog/CodeGen/OpenMP/20120330-argument-use.ll12
-rw-r--r--polly/test/ScopInfo/smax.ll26
3 files changed, 32 insertions, 8 deletions
diff --git a/polly/lib/Support/SCEVValidator.cpp b/polly/lib/Support/SCEVValidator.cpp
index 19ca7d492e2..2434c0664e6 100644
--- a/polly/lib/Support/SCEVValidator.cpp
+++ b/polly/lib/Support/SCEVValidator.cpp
@@ -297,7 +297,7 @@ public:
}
class ValidatorResult visitSMaxExpr(const SCEVSMaxExpr *Expr) {
- ValidatorResult Return(SCEVType::INT, Expr);
+ ValidatorResult Return(SCEVType::INT);
for (int i = 0, e = Expr->getNumOperands(); i < e; ++i) {
ValidatorResult Op = visit(Expr->getOperand(i));
diff --git a/polly/test/Cloog/CodeGen/OpenMP/20120330-argument-use.ll b/polly/test/Cloog/CodeGen/OpenMP/20120330-argument-use.ll
index 415d099c84a..0962ffccec3 100644
--- a/polly/test/Cloog/CodeGen/OpenMP/20120330-argument-use.ll
+++ b/polly/test/Cloog/CodeGen/OpenMP/20120330-argument-use.ll
@@ -58,13 +58,11 @@ for.end: ; preds = %for.cond
ret void
}
-; CHECK: %omp.userContext1 = bitcast i8* %omp.userContext to { i32, i32, i32*, i32* }*
-; CHECK: %0 = getelementptr inbounds { i32, i32, i32*, i32* }* %omp.userContext1, i32 0, i32 0
+; CHECK: %omp.userContext1 = bitcast i8* %omp.userContext to { i32, i32*, i32* }*
+; CHECK: %0 = getelementptr inbounds { i32, i32*, i32* }* %omp.userContext1, i32 0, i32 0
; CHECK: %1 = load i32* %0
-; CHECK: %2 = getelementptr inbounds { i32, i32, i32*, i32* }* %omp.userContext1, i32 0, i32 1
-; CHECK: %3 = load i32* %2
-; CHECK: %4 = getelementptr inbounds { i32, i32, i32*, i32* }* %omp.userContext1, i32 0, i32 2
+; CHECK: %2 = getelementptr inbounds { i32, i32*, i32* }* %omp.userContext1, i32 0, i32 1
+; CHECK: %3 = load i32** %2
+; CHECK: %4 = getelementptr inbounds { i32, i32*, i32* }* %omp.userContext1, i32 0, i32 2
; CHECK: %5 = load i32** %4
-; CHECK: %6 = getelementptr inbounds { i32, i32, i32*, i32* }* %omp.userContext1, i32 0, i32 3
-; CHECK: %7 = load i32** %6
diff --git a/polly/test/ScopInfo/smax.ll b/polly/test/ScopInfo/smax.ll
new file mode 100644
index 00000000000..73998dfe91b
--- /dev/null
+++ b/polly/test/ScopInfo/smax.ll
@@ -0,0 +1,26 @@
+; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s
+target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:64:128-a0:0:32-n32-S64"
+target triple = "thumbv7-none-linux-gnueabi"
+
+define void @foo(i32 * noalias %data, i32 * noalias %ptr, i32 %x_pos, i32 %w) {
+entry:
+ br label %for.body
+
+for.body:
+ %x = phi i32 [ 0, %entry ], [ %x.inc, %for.body ]
+ %add = add nsw i32 %x, %x_pos
+ %cmp1 = icmp sgt i32 %add, %w
+ %cond = select i1 %cmp1, i32 %w, i32 %add
+ %arrayidx = getelementptr inbounds i32* %ptr, i32 %cond
+ store i32 1, i32* %arrayidx
+ %x.inc = add nsw i32 %x, 1
+ %cmp = icmp slt i32 %x.inc, 2
+ br i1 %cmp, label %for.body, label %for.end
+
+for.end:
+ ret void
+}
+
+; We check that there are only two parameters, but not a third one that
+; represents the smax() expression. This test case comes from PR 18155.
+; CHECK: [w, x_pos]
OpenPOWER on IntegriCloud