diff --git a/oscar64/Declaration.cpp b/oscar64/Declaration.cpp index cf8ead0..21db3c4 100644 --- a/oscar64/Declaration.cpp +++ b/oscar64/Declaration.cpp @@ -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; diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index 64ee598..6ad4feb 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -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]; diff --git a/oscar64/Parser.cpp b/oscar64/Parser.cpp index f179a91..d054f61 100644 --- a/oscar64/Parser.cpp +++ b/oscar64/Parser.cpp @@ -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);