diff --git a/oscar64/InterCode.cpp b/oscar64/InterCode.cpp index a1e80d1..2cc9de3 100644 --- a/oscar64/InterCode.cpp +++ b/oscar64/InterCode.cpp @@ -4594,16 +4594,13 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSets(void) } - for (int i = 0; i < mLocalValueRange.Size(); i++) - if (!mExitRequiredTemps[i]) - mLocalValueRange[i].mMinState = mLocalValueRange[i].mMaxState = IntegerValueRange::S_UNKNOWN; mTrueValueRange = mLocalValueRange; mFalseValueRange = mLocalValueRange; if (sz >= 2) { - if (mInstructions[sz - 1]->mCode == IC_BRANCH && mInstructions[sz - 2]->mCode == IC_RELATIONAL_OPERATOR && + if (mInstructions[sz - 1]->mCode == IC_BRANCH && mInstructions[sz - 2]->mCode == IC_RELATIONAL_OPERATOR && mInstructions[sz - 1]->mSrc[0].mTemp == mInstructions[sz - 2]->mDst.mTemp && IsIntegerType(mInstructions[sz - 2]->mSrc[0].mType)) { int s1 = mInstructions[sz - 2]->mSrc[1].mTemp, s0 = mInstructions[sz - 2]->mSrc[0].mTemp; @@ -4744,10 +4741,27 @@ void InterCodeBasicBlock::UpdateLocalIntegerRangeSets(void) } break; } + + if (s1 >= 0 && sz > 2 && mInstructions[sz - 3]->mCode == IC_LOAD_TEMPORARY && mInstructions[sz - 3]->mSrc[0].mTemp == s1) + { + mTrueValueRange[mInstructions[sz - 3]->mDst.mTemp] = mTrueValueRange[s1]; + mFalseValueRange[mInstructions[sz - 3]->mDst.mTemp] = mFalseValueRange[s1]; + } + } + } + + for (int i = 0; i < mLocalValueRange.Size(); i++) + { + if (!mExitRequiredTemps[i]) + { + mLocalValueRange[i].mMinState = mLocalValueRange[i].mMaxState = IntegerValueRange::S_UNKNOWN; + mTrueValueRange[i] = mFalseValueRange[i] = mLocalValueRange[i]; } } } + + void InterCodeBasicBlock::RestartLocalIntegerRangeSets(void) { if (!mVisited) @@ -8195,10 +8209,9 @@ void InterCodeBasicBlock::PeepholeOptimization(void) changed = true; } } + #endif } - - } } while (changed); diff --git a/oscar64/NativeCodeGenerator.cpp b/oscar64/NativeCodeGenerator.cpp index 6abf434..6f98878 100644 --- a/oscar64/NativeCodeGenerator.cpp +++ b/oscar64/NativeCodeGenerator.cpp @@ -10872,7 +10872,7 @@ bool NativeCodeBasicBlock::MoveStoreXUp(int at) { if ((mIns[at - 1].mMode == ASMIM_ZERO_PAGE || mIns[at - 1].mMode == ASMIM_INDIRECT_Y) && mIns[at - 1].mAddress == mIns[at].mAddress) return done; - if (mIns[at - 1].mMode == ASMIM_INDIRECT_Y && mIns[at - 1].mAddress == mIns[at].mAddress + 1) + if (mIns[at - 1].mMode == ASMIM_INDIRECT_Y && mIns[at - 1].mAddress + 1 == mIns[at].mAddress) return done; } else @@ -10937,7 +10937,7 @@ bool NativeCodeBasicBlock::MoveStoreYUp(int at) { if ((mIns[at - 1].mMode == ASMIM_ZERO_PAGE || mIns[at - 1].mMode == ASMIM_INDIRECT_Y) && mIns[at - 1].mAddress == mIns[at].mAddress) return done; - if (mIns[at - 1].mMode == ASMIM_INDIRECT_Y && mIns[at - 1].mAddress == mIns[at].mAddress + 1) + if (mIns[at - 1].mMode == ASMIM_INDIRECT_Y && mIns[at - 1].mAddress + 1 == mIns[at].mAddress) return done; } else diff --git a/oscar64/oscar64.cpp b/oscar64/oscar64.cpp index 2211454..1cdb45b 100644 --- a/oscar64/oscar64.cpp +++ b/oscar64/oscar64.cpp @@ -73,7 +73,7 @@ int main2(int argc, const char** argv) #else strcpy(strProductName, "oscar64"); - strcpy(strProductVersion, "1.4.95"); + strcpy(strProductVersion, "1.4.96"); #ifdef __APPLE__ uint32_t length = sizeof(basePath); diff --git a/oscar64/oscar64.rc b/oscar64/oscar64.rc index ae25e2a..ba27ae8 100644 --- a/oscar64/oscar64.rc +++ b/oscar64/oscar64.rc @@ -25,8 +25,8 @@ LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,4,95,0 - PRODUCTVERSION 1,4,95,0 + FILEVERSION 1,4,96,0 + PRODUCTVERSION 1,4,96,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -43,12 +43,12 @@ BEGIN BEGIN VALUE "CompanyName", "oscar64" VALUE "FileDescription", "oscar64 compiler" - VALUE "FileVersion", "1.4.95.0" + VALUE "FileVersion", "1.4.96.0" VALUE "InternalName", "oscar64.exe" VALUE "LegalCopyright", "Copyright (C) 2021" VALUE "OriginalFilename", "oscar64.exe" VALUE "ProductName", "oscar64" - VALUE "ProductVersion", "1.4.95.0" + VALUE "ProductVersion", "1.4.96.0" END END BLOCK "VarFileInfo" diff --git a/oscar64setup/oscar64setup.vdproj b/oscar64setup/oscar64setup.vdproj index a487ed4..71a0e0c 100644 --- a/oscar64setup/oscar64setup.vdproj +++ b/oscar64setup/oscar64setup.vdproj @@ -3752,15 +3752,15 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:oscar64" - "ProductCode" = "8:{37C3F00F-2A58-4FAD-B5BA-5574475C7831}" - "PackageCode" = "8:{0F1773AB-6C73-4E53-B2D9-A794C417CED2}" + "ProductCode" = "8:{D0A57917-8945-4707-AFE2-0F963C625AEE}" + "PackageCode" = "8:{0DE35B09-6CF2-4B04-BF8B-ED08F7B84405}" "UpgradeCode" = "8:{9AB61EFF-ACAC-4079-9950-8D96615CD4EF}" "AspNetVersion" = "8:2.0.50727.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:TRUE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:FALSE" - "ProductVersion" = "8:1.4.95" + "ProductVersion" = "8:1.4.96" "Manufacturer" = "8:oscar64" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:"