Fix loop inversion invariant integer range recovery
This commit is contained in:
parent
c99c1756a9
commit
4cf64ee170
|
@ -1500,6 +1500,8 @@ const Ident* Declaration::MangleIdent(void)
|
|||
|
||||
if (mFlags & DTF_CONST)
|
||||
mMangleIdent = mMangleIdent->PreMangle("const ");
|
||||
if (mFlags & DTF_VOLATILE)
|
||||
mMangleIdent = mMangleIdent->PreMangle("volatile ");
|
||||
}
|
||||
|
||||
return mMangleIdent;
|
||||
|
|
|
@ -14661,6 +14661,7 @@ bool InterCodeBasicBlock::SingleTailLoopOptimization(const NumberSet& aliasedPar
|
|||
ains->mSrc[0] = nins->mSrc[0];
|
||||
ains->mSrc[0].mIntConst *= indexScale[lins->mSrc[0].mTemp];
|
||||
tail->mInstructions.Insert(tail->mInstructions.Size() - 3, ains);
|
||||
ains->mDst.mRange.mMaxValue += ains->mSrc[0].mIntConst;
|
||||
|
||||
indexScale[ains->mDst.mTemp] = (int)ains->mSrc[0].mIntConst;
|
||||
|
||||
|
@ -14695,6 +14696,7 @@ bool InterCodeBasicBlock::SingleTailLoopOptimization(const NumberSet& aliasedPar
|
|||
ains->mSrc[0].mTemp = -1;
|
||||
ains->mSrc[0].mIntConst = s;
|
||||
tail->mInstructions.Insert(tail->mInstructions.Size() - 3, ains);
|
||||
ains->mDst.mRange.mMaxValue += ains->mSrc[0].mIntConst;
|
||||
|
||||
indexScale[ains->mDst.mTemp] = s;
|
||||
|
||||
|
@ -20998,7 +21000,7 @@ void InterCodeProcedure::Close(void)
|
|||
{
|
||||
GrowingTypeArray tstack(IT_NONE);
|
||||
|
||||
CheckFunc = !strcmp(mIdent->mString, "read_decompress");
|
||||
CheckFunc = !strcmp(mIdent->mString, "_menuShowSprites");
|
||||
CheckCase = false;
|
||||
|
||||
mEntryBlock = mBlocks[0];
|
||||
|
|
|
@ -9098,7 +9098,7 @@ Expression* Parser::ParseStatement(void)
|
|||
{
|
||||
int numLoops = (endValue - startValue + 255) / 256;
|
||||
int numIterations = (endValue - startValue) / numLoops;
|
||||
int stride = (endValue - startValue + numLoops - 1) / numLoops;
|
||||
int stride = (endValue - startValue) / numLoops;
|
||||
int remain = (endValue - startValue) - numIterations * numLoops;
|
||||
|
||||
Expression* unrollBody = new Expression(mScanner->mLocation, EX_SEQUENCE);
|
||||
|
|
Loading…
Reference in New Issue