Do not use wrapping ranges to bound non-affine accesses
commite94f1d4c324556bd5b41f7da110d6f83500c52d8
authorTobias Grosser <tobias@grosser.es>
Sun, 12 Feb 2017 08:11:12 +0000 (12 08:11 +0000)
committerTobias Grosser <tobias@grosser.es>
Sun, 12 Feb 2017 08:11:12 +0000 (12 08:11 +0000)
treec17ca9f48ed8cac52aad22108ff3f28a83221fb2
parent8a17cb41b97797b8b13c40a51464e3159cc09860
Do not use wrapping ranges to bound non-affine accesses

When deriving the range of valid values of a scalar evolution expression might
be a range [12, 8), where the upper bound is smaller than the lower bound and
where the range is expected to possibly wrap around. We theoretically could
model such a range as a union of two non-wrapping ranges, but do not do this
as of yet. Instead, we just do not derive any bounds. Before this change,
we could have obtained bounds where the maximal possible value is strictly
smaller than the minimal possible value, which is incorrect and also caused
assertions during scop modeling.

git-svn-id: https://llvm.org/svn/llvm-project/polly/trunk@294891 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Analysis/ScopInfo.cpp
test/ScopInfo/NonAffine/non-affine-loop-condition-dependent-access_1.ll
test/ScopInfo/NonAffine/non_affine_loop_used_later.ll
test/ScopInfo/NonAffine/non_affine_parametric_loop.ll
test/ScopInfo/multidim_2d_with_modref_call.ll
test/ScopInfo/multidim_2d_with_modref_call_2.ll
test/ScopInfo/multidim_fortran_2d_with_modref_call.ll
test/ScopInfo/multidim_single_and_multidim_array.ll
test/ScopInfo/non_affine_access.ll
test/ScopInfo/non_affine_region_1.ll
test/ScopInfo/ranged_parameter_2.ll [new file with mode: 0644]