aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ScalarEvolution.cpp
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-04-21 15:22:54 +0000
committerNikita Popov <nikita.ppv@gmail.com>2019-04-21 15:22:54 +0000
commitdbc3fbafe7cbf10bac30da4d4b6eb6082fed3daa (patch)
tree5ca3301d2c529849b90e76efc5bda9f91583ab70 /llvm/lib/Analysis/ScalarEvolution.cpp
parent7fa3a0eec9792c5da235ade683013a742871b8c5 (diff)
downloadllvm-dbc3fbafe7cbf10bac30da4d4b6eb6082fed3daa.zip
llvm-dbc3fbafe7cbf10bac30da4d4b6eb6082fed3daa.tar.gz
llvm-dbc3fbafe7cbf10bac30da4d4b6eb6082fed3daa.tar.bz2
[ConstantRange] Add getNonEmpty() constructor
ConstantRanges have an annoying special case: If upper and lower are the same, it can be either an empty or a full set. When constructing constant ranges nearly always a full set is intended, but this still requires an explicit check in many places. This revision adds a getNonEmpty() constructor that disambiguates this case: If upper and lower are the same, a full set is created. Differential Revision: https://reviews.llvm.org/D60947 llvm-svn: 358854
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolution.cpp')
-rw-r--r--llvm/lib/Analysis/ScalarEvolution.cpp6
1 files changed, 1 insertions, 5 deletions
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index 01b4019..1f69bc8 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -5808,12 +5808,8 @@ static ConstantRange getRangeForAffineARHelper(APInt Step,
Descending ? std::move(StartUpper) : std::move(MovedBoundary);
NewUpper += 1;
- // If we end up with full range, return a proper full range.
- if (NewLower == NewUpper)
- return ConstantRange::getFull(BitWidth);
-
// No overflow detected, return [StartLower, StartUpper + Offset + 1) range.
- return ConstantRange(std::move(NewLower), std::move(NewUpper));
+ return ConstantRange::getNonEmpty(std::move(NewLower), std::move(NewUpper));
}
ConstantRange ScalarEvolution::getRangeForAffineAR(const SCEV *Start,