[polly-PATCH 3/3] Drop option -polly-allow-nonaffine-branches
Tobias Grosser
tobias at grosser.es
Sat Apr 18 09:14:44 PDT 2015
This option has been enabled since a while. Since no bugs have been reported, we
will always allow non-affine branches. This reduces the combinations of options
that need to be tested.
---
lib/Analysis/ScopDetection.cpp | 21 ++++++---------------
test/Isl/CodeGen/non_affine_float_compare.ll | 2 +-
test/ScopDetect/non-affine-conditional.ll | 2 +-
test/ScopDetect/non-affine-float-compare.ll | 2 +-
.../non-affine-loop-condition-dependent-access.ll | 6 +++---
.../non-affine-loop-condition-dependent-access_2.ll | 6 +++---
.../non-affine-loop-condition-dependent-access_3.ll | 6 +++---
test/ScopDetect/non-affine-loop.ll | 8 ++++----
.../non-affine-loop-condition-dependent-access_1.ll | 2 +-
.../non-affine-loop-condition-dependent-access_2.ll | 6 +++---
.../non-affine-loop-condition-dependent-access_3.ll | 6 +++---
.../NonAffine/non_affine_conditional_nested.ll | 2 +-
...on_affine_conditional_surrounding_affine_loop.ll | 4 ++--
...ffine_conditional_surrounding_non_affine_loop.ll | 4 ++--
test/ScopInfo/NonAffine/non_affine_float_compare.ll | 2 +-
.../ScopInfo/NonAffine/non_affine_loop_condition.ll | 2 +-
.../NonAffine/non_affine_loop_used_later.ll | 2 +-
17 files changed, 37 insertions(+), 46 deletions(-)
diff --git a/lib/Analysis/ScopDetection.cpp b/lib/Analysis/ScopDetection.cpp
index 22fa60a..bf46b34 100644
--- a/lib/Analysis/ScopDetection.cpp
+++ b/lib/Analysis/ScopDetection.cpp
@@ -126,11 +126,6 @@ static cl::opt<bool>
cl::Hidden, cl::init(false), cl::ZeroOrMore,
cl::cat(PollyCategory));
-static cl::opt<bool> AllowNonAffineSubRegions(
- "polly-allow-nonaffine-branches",
- cl::desc("Allow non affine conditions for branches"), cl::Hidden,
- cl::init(true), cl::ZeroOrMore, cl::cat(PollyCategory));
-
static cl::opt<bool>
AllowNonAffineSubLoops("polly-allow-nonaffine-loops",
cl::desc("Allow non affine conditions for loops"),
@@ -321,8 +316,7 @@ bool ScopDetection::isValidCFG(BasicBlock &BB,
// Only Constant and ICmpInst are allowed as condition.
if (!(isa<Constant>(Condition) || isa<ICmpInst>(Condition))) {
- if (!AllowNonAffineSubRegions ||
- !addOverApproximatedRegion(RI->getRegionFor(&BB), Context))
+ if (!addOverApproximatedRegion(RI->getRegionFor(&BB), Context))
return invalid<ReportInvalidCond>(Context, /*Assert=*/true, Br, &BB);
}
@@ -349,8 +343,7 @@ bool ScopDetection::isValidCFG(BasicBlock &BB,
if (!isAffineExpr(&CurRegion, LHS, *SE) ||
!isAffineExpr(&CurRegion, RHS, *SE)) {
- if (!AllowNonAffineSubRegions ||
- !addOverApproximatedRegion(RI->getRegionFor(&BB), Context))
+ if (!addOverApproximatedRegion(RI->getRegionFor(&BB), Context))
return invalid<ReportNonAffBranch>(Context, /*Assert=*/true, &BB, LHS,
RHS, ICmp);
}
@@ -685,12 +678,10 @@ bool ScopDetection::isValidLoop(Loop *L, DetectionContext &Context) const {
return true;
}
- if (AllowNonAffineSubRegions) {
- Region *R = RI->getRegionFor(L->getHeader());
- if (R->contains(L))
- if (addOverApproximatedRegion(R, Context))
- return true;
- }
+ Region *R = RI->getRegionFor(L->getHeader());
+ if (R->contains(L))
+ if (addOverApproximatedRegion(R, Context))
+ return true;
return invalid<ReportLoopBound>(Context, /*Assert=*/true, L, LoopCount);
}
diff --git a/test/Isl/CodeGen/non_affine_float_compare.ll b/test/Isl/CodeGen/non_affine_float_compare.ll
index d62e1e6..865cfef 100644
--- a/test/Isl/CodeGen/non_affine_float_compare.ll
+++ b/test/Isl/CodeGen/non_affine_float_compare.ll
@@ -1,4 +1,4 @@
-; RUN: opt %loadPolly -polly-codegen-isl -polly-no-early-exit -polly-allow-nonaffine-branches -S -verify-dom-info < %s | FileCheck %s
+; RUN: opt %loadPolly -polly-codegen-isl -polly-no-early-exit -S -verify-dom-info < %s | FileCheck %s
;
; void f(float *A) {
; for (int i = 0; i < 1024; i++)
diff --git a/test/ScopDetect/non-affine-conditional.ll b/test/ScopDetect/non-affine-conditional.ll
index d5ed1a9..a95c2a3 100644
--- a/test/ScopDetect/non-affine-conditional.ll
+++ b/test/ScopDetect/non-affine-conditional.ll
@@ -1,4 +1,4 @@
-; RUN: opt %loadPolly -polly-allow-nonaffine-branches -polly-detect -analyze < %s | FileCheck %s
+; RUN: opt %loadPolly -polly-detect -analyze < %s | FileCheck %s
;
; void f(int *A) {
; for (int i = 0; i < 1024; i++)
diff --git a/test/ScopDetect/non-affine-float-compare.ll b/test/ScopDetect/non-affine-float-compare.ll
index 875d220..2172cef 100644
--- a/test/ScopDetect/non-affine-float-compare.ll
+++ b/test/ScopDetect/non-affine-float-compare.ll
@@ -1,4 +1,4 @@
-; RUN: opt %loadPolly -polly-detect -polly-allow-nonaffine-branches -analyze < %s | FileCheck %s
+; RUN: opt %loadPolly -polly-detect -analyze < %s | FileCheck %s
;
; void f(float *A) {
; for (int i = 0; i < 1024; i++)
diff --git a/test/ScopDetect/non-affine-loop-condition-dependent-access.ll b/test/ScopDetect/non-affine-loop-condition-dependent-access.ll
index 9bd7ebc..10eb75d 100644
--- a/test/ScopDetect/non-affine-loop-condition-dependent-access.ll
+++ b/test/ScopDetect/non-affine-loop-condition-dependent-access.ll
@@ -1,6 +1,6 @@
-; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS
-; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS
-; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES
+; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS
+; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS
+; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES
;
; Here we have a non-affine loop but also a non-affine access which should
; be rejected as long as -polly-allow-nonaffine isn't given.
diff --git a/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll b/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll
index c5a3f66..004621d 100644
--- a/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll
+++ b/test/ScopDetect/non-affine-loop-condition-dependent-access_2.ll
@@ -1,6 +1,6 @@
-; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS
-; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS
-; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES
+; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS
+; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS
+; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES
;
; Here we have a non-affine loop (in the context of the loop nest)
; and also a non-affine access (A[k]). While we can always detect the
diff --git a/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll b/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll
index 644af88..6cf85c0 100644
--- a/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll
+++ b/test/ScopDetect/non-affine-loop-condition-dependent-access_3.ll
@@ -1,6 +1,6 @@
-; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS
-; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS
-; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES
+; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS
+; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS
+; RUN: opt %loadPolly -basicaa -polly-detect -polly-allow-nonaffine -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES
;
; Here we have a non-affine loop (in the context of the loop nest)
; and also a non-affine access (A[k]). While we can always detect the
diff --git a/test/ScopDetect/non-affine-loop.ll b/test/ScopDetect/non-affine-loop.ll
index ad13e3e..ab53c77 100644
--- a/test/ScopDetect/non-affine-loop.ll
+++ b/test/ScopDetect/non-affine-loop.ll
@@ -1,7 +1,7 @@
-; RUN: opt %loadPolly -polly-detect -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS
-; RUN: opt %loadPolly -polly-detect -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS
-; RUN: opt %loadPolly -polly-detect -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES
-; RUN: opt %loadPolly -polly-detect -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -polly-allow-nonaffine -polly-detect-scops-in-regions-without-loops -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSESANDNOLOOPS
+; RUN: opt %loadPolly -polly-detect -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=REJECTNONAFFINELOOPS
+; RUN: opt %loadPolly -polly-detect -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPS
+; RUN: opt %loadPolly -polly-detect -polly-allow-nonaffine-loops=true -polly-allow-nonaffine -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSES
+; RUN: opt %loadPolly -polly-detect -polly-allow-nonaffine-loops=true -polly-allow-nonaffine -polly-detect-scops-in-regions-without-loops -analyze < %s | FileCheck %s --check-prefix=ALLOWNONAFFINELOOPSANDACCESSESANDNOLOOPS
;
; This function/region does contain a loop, however it is non-affine, hence the access
; A[i] is also. Furthermore, it is the only loop, thus when we over approximate
diff --git a/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll b/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll
index 3f05fb1..77e14e4 100644
--- a/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll
+++ b/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll
@@ -1,4 +1,4 @@
-; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s
+; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s
;
; CHECK: Function: f
; CHECK: Region: %bb1---%bb13
diff --git a/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll b/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll
index 57122a9..b11bf4b 100644
--- a/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll
+++ b/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_2.ll
@@ -1,6 +1,6 @@
-; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=INNERMOST
-; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=INNERMOST
-; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALL
+; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=INNERMOST
+; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=INNERMOST
+; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALL
;
; Here we have a non-affine loop (in the context of the loop nest)
; and also a non-affine access (A[k]). While we can always model the
diff --git a/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll b/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll
index b46ab4f..b34ee73 100644
--- a/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll
+++ b/test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_3.ll
@@ -1,6 +1,6 @@
-; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=INNERMOST
-; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=INNERMOST
-; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALL
+; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine-loops=false -analyze < %s | FileCheck %s --check-prefix=INNERMOST
+; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=INNERMOST
+; RUN: opt %loadPolly -basicaa -polly-scops -polly-allow-nonaffine -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALL
;
; Here we have a non-affine loop (in the context of the loop nest)
; and also a non-affine access (A[k]). While we can always model the
diff --git a/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll b/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll
index 1522963..3c29395 100644
--- a/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll
+++ b/test/ScopInfo/NonAffine/non_affine_conditional_nested.ll
@@ -1,4 +1,4 @@
-; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine-branches -analyze < %s | FileCheck %s
+; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s
;
; void f(int *A) {
; for (int i = 0; i < 1024; i++)
diff --git a/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll b/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll
index 21f2cee..b24408a 100644
--- a/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll
+++ b/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_affine_loop.ll
@@ -1,5 +1,5 @@
-; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=INNERMOST
-; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALL
+; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=INNERMOST
+; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALL
;
; INNERMOST: Function: f
; INNERMOST: Region: %bb9---%bb17
diff --git a/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll b/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll
index ef44ce0..57a95b7 100644
--- a/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll
+++ b/test/ScopInfo/NonAffine/non_affine_conditional_surrounding_non_affine_loop.ll
@@ -1,5 +1,5 @@
-; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=INNERMOST
-; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALL
+; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=INNERMOST
+; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine -polly-allow-nonaffine-loops=true -analyze < %s | FileCheck %s --check-prefix=ALL
;
; INNERMOST: Function: f
; INNERMOST: Region: %bb9---%bb18
diff --git a/test/ScopInfo/NonAffine/non_affine_float_compare.ll b/test/ScopInfo/NonAffine/non_affine_float_compare.ll
index 7148abf..6a1a3b8 100644
--- a/test/ScopInfo/NonAffine/non_affine_float_compare.ll
+++ b/test/ScopInfo/NonAffine/non_affine_float_compare.ll
@@ -1,4 +1,4 @@
-; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine-branches -analyze < %s | FileCheck %s
+; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s
;
; void f(float *A) {
; for (int i = 0; i < 1024; i++)
diff --git a/test/ScopInfo/NonAffine/non_affine_loop_condition.ll b/test/ScopInfo/NonAffine/non_affine_loop_condition.ll
index 04d6dee..9d432d6 100644
--- a/test/ScopInfo/NonAffine/non_affine_loop_condition.ll
+++ b/test/ScopInfo/NonAffine/non_affine_loop_condition.ll
@@ -1,4 +1,4 @@
-; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops -analyze < %s | FileCheck %s
+; RUN: opt %loadPolly -polly-scops -polly-allow-nonaffine-loops -analyze < %s | FileCheck %s
;
; void f(int *A, int *C) {
; for (int i = 0; i < 1024; i++) {
diff --git a/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll b/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll
index 506cb9a..a6f9213 100644
--- a/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll
+++ b/test/ScopInfo/NonAffine/non_affine_loop_used_later.ll
@@ -1,4 +1,4 @@
-; RUN: opt %loadPolly -polly-scops -polly-model-phi-nodes -disable-polly-intra-scop-scalar-to-array -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops -analyze < %s | FileCheck %s
+; RUN: opt %loadPolly -polly-scops -polly-model-phi-nodes -disable-polly-intra-scop-scalar-to-array -polly-allow-nonaffine -polly-allow-nonaffine-loops -analyze < %s | FileCheck %s
;
; Verify that we over approximate the read acces of A[j] in the last statement as j is
; computed in a non-affine loop we do not model.
--
2.1.0
More information about the llvm-commits
mailing list