summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Hahn <flo@fhahn.com>2019-04-25 10:12:43 +0000
committerFlorian Hahn <flo@fhahn.com>2019-04-25 10:12:43 +0000
commit1038137f14ba07f3acbfdc41384d35e965e0178c (patch)
tree251fdd148a25ec0f7b56d98b1bf8361a2426f7f5
parent6fae38ec9100f0ad8b2c0352bae90aa64383172b (diff)
downloadbcm5719-llvm-1038137f14ba07f3acbfdc41384d35e965e0178c.tar.gz
bcm5719-llvm-1038137f14ba07f3acbfdc41384d35e965e0178c.zip
[ConstantRange] [a, b) udiv a full range is [0, umax(b)).
Reviewers: nikic, spatel, efriedma Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D60536 llvm-svn: 359180
-rw-r--r--llvm/lib/IR/ConstantRange.cpp2
-rw-r--r--llvm/unittests/IR/ConstantRangeTest.cpp10
2 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/IR/ConstantRange.cpp b/llvm/lib/IR/ConstantRange.cpp
index 7e2c6727703..af71fd3ac65 100644
--- a/llvm/lib/IR/ConstantRange.cpp
+++ b/llvm/lib/IR/ConstantRange.cpp
@@ -974,8 +974,6 @@ ConstantRange
ConstantRange::udiv(const ConstantRange &RHS) const {
if (isEmptySet() || RHS.isEmptySet() || RHS.getUnsignedMax().isNullValue())
return getEmpty();
- if (RHS.isFullSet())
- return getFull();
APInt Lower = getUnsignedMin().udiv(RHS.getUnsignedMax());
diff --git a/llvm/unittests/IR/ConstantRangeTest.cpp b/llvm/unittests/IR/ConstantRangeTest.cpp
index 692d151778e..b9d8fe071e3 100644
--- a/llvm/unittests/IR/ConstantRangeTest.cpp
+++ b/llvm/unittests/IR/ConstantRangeTest.cpp
@@ -821,6 +821,16 @@ TEST_F(ConstantRangeTest, UDiv) {
EXPECT_EQ(Some.udiv(Some), ConstantRange(APInt(16, 0), APInt(16, 0x111)));
EXPECT_EQ(Some.udiv(Wrap), ConstantRange(APInt(16, 0), APInt(16, 0xaaa)));
EXPECT_EQ(Wrap.udiv(Wrap), Full);
+
+
+ ConstantRange Zero(APInt(16, 0));
+ EXPECT_EQ(Zero.udiv(One), Zero);
+ EXPECT_EQ(Zero.udiv(Full), Zero);
+
+ EXPECT_EQ(ConstantRange(APInt(16, 0), APInt(16, 99)).udiv(Full),
+ ConstantRange(APInt(16, 0), APInt(16, 99)));
+ EXPECT_EQ(ConstantRange(APInt(16, 10), APInt(16, 99)).udiv(Full),
+ ConstantRange(APInt(16, 0), APInt(16, 99)));
}
TEST_F(ConstantRangeTest, URem) {
OpenPOWER on IntegriCloud