mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +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:
parent
ff84de767a
commit
780905e9f9
@ -159,14 +159,10 @@ APInt ConstantRange::getSignedMax() const {
|
||||
else
|
||||
return SignedMax;
|
||||
} else {
|
||||
if ((getUpper() - 1).slt(getLower())) {
|
||||
if (getLower() != SignedMax)
|
||||
if (getLower().isNegative() == getUpper().isNegative())
|
||||
return SignedMax;
|
||||
else
|
||||
return getUpper() - 1;
|
||||
} else {
|
||||
return getUpper() - 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -137,6 +137,10 @@ TEST_F(ConstantRangeTest, GetMinsAndMaxes) {
|
||||
EXPECT_EQ(One.getSignedMin(), APInt(16, 0xa));
|
||||
EXPECT_EQ(Some.getSignedMin(), APInt(16, 0xa));
|
||||
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) {
|
||||
|
Loading…
Reference in New Issue
Block a user