From 323ab3975b6005f963cf152a5b0f4f014ef43be1 Mon Sep 17 00:00:00 2001 From: Johannes Doerfert Date: Tue, 26 Apr 2016 12:44:01 +0000 Subject: [PATCH] [FIX] Adjust assumption space for zext instructions llvm-svn: 267552 --- polly/lib/Support/SCEVAffinator.cpp | 3 ++- polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll | 2 +- polly/test/ScopInfo/zero_ext_space_mismatch.ll | 30 ++++++++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 polly/test/ScopInfo/zero_ext_space_mismatch.ll diff --git a/polly/lib/Support/SCEVAffinator.cpp b/polly/lib/Support/SCEVAffinator.cpp index 1e6fb5c..ed3eb10 100644 --- a/polly/lib/Support/SCEVAffinator.cpp +++ b/polly/lib/Support/SCEVAffinator.cpp @@ -338,8 +338,9 @@ SCEVAffinator::visitZeroExtendExpr(const SCEVZeroExtendExpr *Expr) { auto *NegDom = isl_pw_aff_pos_set(NegOpPWA); auto *ExprDomain = BB ? S->getDomainConditions(BB) : nullptr; NegDom = ExprDomain ? isl_set_intersect(NegDom, ExprDomain) : NegDom; - auto DL = BB ? BB->getTerminator()->getDebugLoc() : DebugLoc(); OpPWAC.second = isl_set_union(OpPWAC.second, isl_set_copy(NegDom)); + NegDom = BB ? NegDom : isl_set_params(NegDom); + auto DL = BB ? BB->getTerminator()->getDebugLoc() : DebugLoc(); S->recordAssumption(UNSIGNED, NegDom, DL, AS_RESTRICTION, BB); return OpPWAC; } diff --git a/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll b/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll index 8960cab..fbe722e 100644 --- a/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll +++ b/polly/test/ScopInfo/multidim_only_ivs_3d_cast.ll @@ -11,7 +11,7 @@ ; CHECK: Assumed Context: ; CHECK-NEXT: [o, m, n] -> { : } ; CHECK-NEXT: Invalid Context: -; CHECK-NEXT: [o, m, n] -> { : o < 0 or (o >= 0 and m < 0) or (o >= 0 and m >= 0 and n <= 0) or (m = 0 and o >= 0 and n > 0) or (o = 0 and m > 0 and n > 0) } +; CHECK-NEXT: [o, m, n] -> { : o < 0 or m < 0 or (o >= 0 and m >= 0 and n <= 0) or (m = 0 and o >= 0 and n > 0) or (o = 0 and m > 0 and n > 0) } ; ; CHECK: p0: %o diff --git a/polly/test/ScopInfo/zero_ext_space_mismatch.ll b/polly/test/ScopInfo/zero_ext_space_mismatch.ll new file mode 100644 index 0000000..98f3750 --- /dev/null +++ b/polly/test/ScopInfo/zero_ext_space_mismatch.ll @@ -0,0 +1,30 @@ +; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s +; +; CHECK: Assumed Context: +; CHECK-NEXT: [dim] -> { : dim > 0 } +; CHECK-NEXT: Invalid Context: +; CHECK-NEXT: [dim] -> { : dim < 0 } +; +target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" + +; Function Attrs: nounwind uwtable +define void @horner_bezier_curve(float* %cp, i32 %dim) #0 { +entry: + br label %for.body18.lr.ph + +for.body18.lr.ph: ; preds = %entry + %add.ptr = getelementptr inbounds float, float* %cp, i64 0 + br label %for.body18 + +for.body18: ; preds = %for.body18, %for.body18.lr.ph + %cp.addr.052 = phi float* [ %add.ptr, %for.body18.lr.ph ], [ %add.ptr43, %for.body18 ] + %arrayidx31 = getelementptr inbounds float, float* %cp.addr.052, i64 0 + %0 = load float, float* %arrayidx31, align 4 + store float %0, float* %arrayidx31, align 4 + %idx.ext42 = zext i32 %dim to i64 + %add.ptr43 = getelementptr inbounds float, float* %cp.addr.052, i64 %idx.ext42 + br i1 false, label %for.body18, label %if.end + +if.end: ; preds = %for.body18 + ret void +} -- 2.7.4