mirror of
https://github.com/RPCS3/llvm.git
synced 2024-11-27 13:40:43 +00:00
Fix a bug summing two full sets. The overflow checking doesn't handle sets as
large as the full set, only those one size smaller. Thanks to Daniel Dunbar who found this bug using Klee! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75443 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
deb052a3dd
commit
cf9e07dea8
@ -533,6 +533,8 @@ ConstantRange
|
||||
ConstantRange::add(const ConstantRange &Other) const {
|
||||
if (isEmptySet() || Other.isEmptySet())
|
||||
return ConstantRange(getBitWidth(), /*isFullSet=*/false);
|
||||
if (isFullSet() || Other.isFullSet())
|
||||
return ConstantRange(getBitWidth(), /*isFullSet=*/true);
|
||||
|
||||
APInt Spread_X = getSetSize(), Spread_Y = Other.getSetSize();
|
||||
APInt NewLower = getLower() + Other.getLower();
|
||||
|
@ -239,6 +239,7 @@ TEST_F(ConstantRangeTest, SubtractAPInt) {
|
||||
|
||||
TEST_F(ConstantRangeTest, Add) {
|
||||
EXPECT_TRUE(Full.add(APInt(16, 4)).isFullSet());
|
||||
EXPECT_EQ(Full.add(Full), Full);
|
||||
EXPECT_EQ(Full.add(Empty), Empty);
|
||||
EXPECT_EQ(Full.add(One), Full);
|
||||
EXPECT_EQ(Full.add(Some), Full);
|
||||
|
Loading…
Reference in New Issue
Block a user