Improve const bitmask optimization

This commit is contained in:
drmortalwombat 2025-01-03 14:29:08 +01:00
parent 38bb033328
commit d6362a305f
2 changed files with 9 additions and 2 deletions

View File

@ -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;

View File

@ -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
{ {