From: Florian Hahn Date: Thu, 25 Apr 2019 10:12:43 +0000 (+0000) Subject: [ConstantRange] [a, b) udiv a full range is [0, umax(b)). X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=32986d30ff257822b8c7a3899637b18356cbe026;p=llvm [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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@359180 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/IR/ConstantRange.cpp b/lib/IR/ConstantRange.cpp index 7e2c6727703..af71fd3ac65 100644 --- a/lib/IR/ConstantRange.cpp +++ b/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/unittests/IR/ConstantRangeTest.cpp b/unittests/IR/ConstantRangeTest.cpp index 692d151778e..b9d8fe071e3 100644 --- a/unittests/IR/ConstantRangeTest.cpp +++ b/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) {