mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-15 22:28:18 +00:00
Fix an error in ConstantRange::getSignedMax on wrapped ranges. Thanks once
again to Daniel Dunbar and KLEE! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75449 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -159,14 +159,10 @@ APInt ConstantRange::getSignedMax() const {
|
|||||||
else
|
else
|
||||||
return SignedMax;
|
return SignedMax;
|
||||||
} else {
|
} else {
|
||||||
if ((getUpper() - 1).slt(getLower())) {
|
if (getLower().isNegative() == getUpper().isNegative())
|
||||||
if (getLower() != SignedMax)
|
|
||||||
return SignedMax;
|
return SignedMax;
|
||||||
else
|
else
|
||||||
return getUpper() - 1;
|
return getUpper() - 1;
|
||||||
} else {
|
|
||||||
return getUpper() - 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -137,6 +137,10 @@ TEST_F(ConstantRangeTest, GetMinsAndMaxes) {
|
|||||||
EXPECT_EQ(One.getSignedMin(), APInt(16, 0xa));
|
EXPECT_EQ(One.getSignedMin(), APInt(16, 0xa));
|
||||||
EXPECT_EQ(Some.getSignedMin(), APInt(16, 0xa));
|
EXPECT_EQ(Some.getSignedMin(), APInt(16, 0xa));
|
||||||
EXPECT_EQ(Wrap.getSignedMin(), APInt(16, INT16_MIN));
|
EXPECT_EQ(Wrap.getSignedMin(), APInt(16, INT16_MIN));
|
||||||
|
|
||||||
|
// Found by Klee
|
||||||
|
EXPECT_EQ(ConstantRange(APInt(4, 7), APInt(4, 0)).getSignedMax(),
|
||||||
|
APInt(4, 7));
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(ConstantRangeTest, Trunc) {
|
TEST_F(ConstantRangeTest, Trunc) {
|
||||||
|
Reference in New Issue
Block a user