Improve const bitmask optimization
This commit is contained in:
parent
38bb033328
commit
d6362a305f
|
@ -32,6 +32,13 @@ namespace opp {
|
||||||
v = k;
|
v = k;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void operator+=(int k)
|
||||||
|
{
|
||||||
|
k += v;
|
||||||
|
__assume(k >= tmin && k <= tmax);
|
||||||
|
v = k;
|
||||||
|
}
|
||||||
|
|
||||||
operator int() const
|
operator int() const
|
||||||
{
|
{
|
||||||
int k = v;
|
int k = v;
|
||||||
|
|
|
@ -8775,7 +8775,7 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSetsForward(const GrowingVariab
|
||||||
{
|
{
|
||||||
vr.mMinState = IntegerValueRange::S_BOUND;
|
vr.mMinState = IntegerValueRange::S_BOUND;
|
||||||
vr.mMinValue = 0;
|
vr.mMinValue = 0;
|
||||||
vr.LimitMax(ins->mSrc[0].mIntConst);
|
vr.LimitMax(ins->mSrc[0].mIntConst & BuildLowerBitsMask(ins->mSrc[1].mRange.mMaxValue));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -8794,7 +8794,7 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSetsForward(const GrowingVariab
|
||||||
{
|
{
|
||||||
vr.mMinState = IntegerValueRange::S_BOUND;
|
vr.mMinState = IntegerValueRange::S_BOUND;
|
||||||
vr.mMinValue = 0;
|
vr.mMinValue = 0;
|
||||||
vr.LimitMax(ins->mSrc[1].mIntConst);
|
vr.LimitMax(ins->mSrc[1].mIntConst & BuildLowerBitsMask(ins->mSrc[0].mRange.mMaxValue));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue