forked from OSchip/llvm-project
Do Not Model Unbounded Loops
Code generation currently does not expect unbounded loops. When using ISL to compute the loop trip count, if we find that the iteration domain remains unbounded, we invalidate the Scop by creating an infeasible context. Contributed-by: Matthew Simpson <mssimpso@codeaurora.org> This fixes PR24634. Differential Revision: http://reviews.llvm.org/D12493 llvm-svn: 246477
This commit is contained in:
parent
a88caeab6c
commit
5f912d3797
polly
|
@ -903,9 +903,13 @@ void ScopStmt::addLoopBoundsToDomain(TempScop &tempScop) {
|
|||
isl_set *UpperBoundSet = isl_pw_aff_le_set(IV, UpperBound);
|
||||
Domain = isl_set_intersect(Domain, UpperBoundSet);
|
||||
} else {
|
||||
// If SCEV cannot provide a loop trip count we compute it with ISL.
|
||||
// If SCEV cannot provide a loop trip count, we compute it with ISL. If
|
||||
// the domain remains unbounded, make the assumed context infeasible
|
||||
// as code generation currently does not expect unbounded loops.
|
||||
addLoopTripCountToDomain(L);
|
||||
isl_pw_aff_free(IV);
|
||||
if (!isl_set_dim_has_upper_bound(Domain, isl_dim_set, i))
|
||||
Parent.addAssumption(isl_set_empty(Parent.getParamSpace()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
; RUN: opt %loadPolly -polly-detect-unprofitable -polly-allow-non-scev-backedge-taken-count -polly-scops -analyze < %s | FileCheck %s
|
||||
;
|
||||
; CHECK: [M, N] -> { Stmt_for_body[i0] : i0 >= 0 and N <= -1 + M };
|
||||
; TODO: We do not allow unbounded loops at the moment.
|
||||
;
|
||||
; CHECK-NOT: Stmt_for_body
|
||||
;
|
||||
; void f(int *A, int N, int M) {
|
||||
; for (int i = M; i > N; i++)
|
||||
|
|
Loading…
Reference in New Issue