Remove some superflous range violation warnings
This commit is contained in:
parent
354a420aa4
commit
c28f342f3e
|
@ -11941,7 +11941,10 @@ void InterCodeBasicBlock::RenameValueRanges(const GrowingIntArray& renameTable,
|
||||||
if (mEntryValueRange.Size() > 0)
|
if (mEntryValueRange.Size() > 0)
|
||||||
{
|
{
|
||||||
mProc->mLocalValueRange = mEntryValueRange;
|
mProc->mLocalValueRange = mEntryValueRange;
|
||||||
|
GrowingArray<int64> memoryValueSize(mMemoryValueSize);
|
||||||
|
|
||||||
mEntryValueRange.SetSize(numTemps, true);
|
mEntryValueRange.SetSize(numTemps, true);
|
||||||
|
mMemoryValueSize.SetSize(numTemps, true);
|
||||||
for (int i = 0; i < mProc->mLocalValueRange.Size(); i++)
|
for (int i = 0; i < mProc->mLocalValueRange.Size(); i++)
|
||||||
{
|
{
|
||||||
if (renameTable[i] >= 0)
|
if (renameTable[i] >= 0)
|
||||||
|
@ -11950,6 +11953,7 @@ void InterCodeBasicBlock::RenameValueRanges(const GrowingIntArray& renameTable,
|
||||||
assert(mProc->mLocalValueRange[i].mMaxState == IntegerValueRange::S_UNKNOWN || mEntryValueRange[renameTable[i]].mMaxState == IntegerValueRange::S_UNKNOWN);
|
assert(mProc->mLocalValueRange[i].mMaxState == IntegerValueRange::S_UNKNOWN || mEntryValueRange[renameTable[i]].mMaxState == IntegerValueRange::S_UNKNOWN);
|
||||||
|
|
||||||
mEntryValueRange[renameTable[i]].Limit(mProc->mLocalValueRange[i]);
|
mEntryValueRange[renameTable[i]].Limit(mProc->mLocalValueRange[i]);
|
||||||
|
mMemoryValueSize[renameTable[i]] = int64min(mMemoryValueSize[renameTable[i]], memoryValueSize[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19644,6 +19648,8 @@ void InterCodeProcedure::RebuildIntegerRangeSet(void)
|
||||||
{
|
{
|
||||||
mLocalValueRange.SetSize(mTemporaries.Size(), false);
|
mLocalValueRange.SetSize(mTemporaries.Size(), false);
|
||||||
|
|
||||||
|
DisassembleDebug("BeforeRebuildIntegerRangeSet");
|
||||||
|
|
||||||
ResetVisited();
|
ResetVisited();
|
||||||
mEntryBlock->RestartLocalIntegerRangeSets(mTemporaries.Size(), mLocalVars, mParamVars);
|
mEntryBlock->RestartLocalIntegerRangeSets(mTemporaries.Size(), mLocalVars, mParamVars);
|
||||||
|
|
||||||
|
@ -20564,7 +20570,7 @@ void InterCodeProcedure::Close(void)
|
||||||
{
|
{
|
||||||
GrowingTypeArray tstack(IT_NONE);
|
GrowingTypeArray tstack(IT_NONE);
|
||||||
|
|
||||||
CheckFunc = !strcmp(mIdent->mString, "main");
|
CheckFunc = !strcmp(mIdent->mString, "interpret_program");
|
||||||
CheckCase = false;
|
CheckCase = false;
|
||||||
|
|
||||||
mEntryBlock = mBlocks[0];
|
mEntryBlock = mBlocks[0];
|
||||||
|
|
|
@ -22655,6 +22655,12 @@ bool NativeCodeBasicBlock::JoinTailCodeSequences(NativeCodeProcedure* proc, bool
|
||||||
mEntryRequiredRegs += CPU_REG_Y;
|
mEntryRequiredRegs += CPU_REG_Y;
|
||||||
if (ins.RequiresXReg())
|
if (ins.RequiresXReg())
|
||||||
mEntryRequiredRegs += CPU_REG_X;
|
mEntryRequiredRegs += CPU_REG_X;
|
||||||
|
if (ins.ChangesZFlag())
|
||||||
|
mEntryRequiredRegs -= CPU_REG_Z;
|
||||||
|
if (ins.ChangesCarry())
|
||||||
|
mEntryRequiredRegs -= CPU_REG_C;
|
||||||
|
if (ins.RequiresCarry())
|
||||||
|
mEntryRequiredRegs += CPU_REG_C;
|
||||||
|
|
||||||
mIns.Insert(0, ins);
|
mIns.Insert(0, ins);
|
||||||
|
|
||||||
|
@ -22668,6 +22674,12 @@ bool NativeCodeBasicBlock::JoinTailCodeSequences(NativeCodeProcedure* proc, bool
|
||||||
b->mExitRequiredRegs += CPU_REG_Y;
|
b->mExitRequiredRegs += CPU_REG_Y;
|
||||||
if (ins.RequiresXReg())
|
if (ins.RequiresXReg())
|
||||||
b->mExitRequiredRegs += CPU_REG_X;
|
b->mExitRequiredRegs += CPU_REG_X;
|
||||||
|
if (ins.ChangesZFlag())
|
||||||
|
b->mExitRequiredRegs -= CPU_REG_Z;
|
||||||
|
if (ins.ChangesCarry())
|
||||||
|
b->mExitRequiredRegs -= CPU_REG_C;
|
||||||
|
if (ins.RequiresCarry())
|
||||||
|
b->mExitRequiredRegs += CPU_REG_C;
|
||||||
|
|
||||||
b->mIns.SetSize(b->mIns.Size() - 1);
|
b->mIns.SetSize(b->mIns.Size() - 1);
|
||||||
}
|
}
|
||||||
|
@ -34166,6 +34178,8 @@ bool NativeCodeBasicBlock::OptimizeSimpleLoopInvariant(NativeCodeProcedure* proc
|
||||||
prevBlock->mIns.Push(mIns[si]);
|
prevBlock->mIns.Push(mIns[si]);
|
||||||
mIns.Remove(si);
|
mIns.Remove(si);
|
||||||
|
|
||||||
|
prevBlock->mExitRequiredRegs += CPU_REG_X;
|
||||||
|
|
||||||
mEntryRequiredRegs += CPU_REG_X;
|
mEntryRequiredRegs += CPU_REG_X;
|
||||||
mExitRequiredRegs += CPU_REG_X;
|
mExitRequiredRegs += CPU_REG_X;
|
||||||
|
|
||||||
|
@ -34199,6 +34213,8 @@ bool NativeCodeBasicBlock::OptimizeSimpleLoopInvariant(NativeCodeProcedure* proc
|
||||||
prevBlock->mIns.Push(mIns[si]);
|
prevBlock->mIns.Push(mIns[si]);
|
||||||
mIns.Remove(si);
|
mIns.Remove(si);
|
||||||
|
|
||||||
|
prevBlock->mExitRequiredRegs += CPU_REG_X;
|
||||||
|
|
||||||
mEntryRequiredRegs += CPU_REG_X;
|
mEntryRequiredRegs += CPU_REG_X;
|
||||||
mExitRequiredRegs += CPU_REG_X;
|
mExitRequiredRegs += CPU_REG_X;
|
||||||
|
|
||||||
|
@ -46146,6 +46162,8 @@ bool NativeCodeBasicBlock::PeepHoleOptimizer(NativeCodeProcedure* proc, int pass
|
||||||
mIns[sz - 2].mType = ASMIT_NOP; mIns[sz - 2].mMode = ASMIM_IMPLIED;
|
mIns[sz - 2].mType = ASMIT_NOP; mIns[sz - 2].mMode = ASMIM_IMPLIED;
|
||||||
mIns[sz - 1].mType = ASMIT_ORA; mIns[sz - 1].mAddress = 0; mIns[sz - 1].mLive |= LIVE_CPU_REG_Z;
|
mIns[sz - 1].mType = ASMIT_ORA; mIns[sz - 1].mAddress = 0; mIns[sz - 1].mLive |= LIVE_CPU_REG_Z;
|
||||||
|
|
||||||
|
mExitRequiredRegs -= CPU_REG_C;
|
||||||
|
|
||||||
CheckLive();
|
CheckLive();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46661,9 +46679,9 @@ void NativeCodeBasicBlock::CheckLive(void)
|
||||||
assert(mEntryRequiredRegs[CPU_REG_Y]);
|
assert(mEntryRequiredRegs[CPU_REG_Y]);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mExitRequiredRegs.Size() > 0 && mExitRequiredRegs[CPU_REG_Z])
|
if (mExitRequiredRegs.Size() > 0 && mExitRequiredRegs[CPU_REG_Z] && (mFalseJump || mTrueJump->mEntryRequiredRegs[CPU_REG_Z]))
|
||||||
live |= LIVE_CPU_REG_Z;
|
live |= LIVE_CPU_REG_Z;
|
||||||
if (mExitRequiredRegs.Size() > 0 && mExitRequiredRegs[CPU_REG_C])
|
if (mExitRequiredRegs.Size() > 0 && mExitRequiredRegs[CPU_REG_C] && (mFalseJump || mTrueJump->mEntryRequiredRegs[CPU_REG_C]))
|
||||||
live |= LIVE_CPU_REG_C;
|
live |= LIVE_CPU_REG_C;
|
||||||
|
|
||||||
for (int j = mIns.Size() - 1; j >= 0; j--)
|
for (int j = mIns.Size() - 1; j >= 0; j--)
|
||||||
|
@ -47391,7 +47409,7 @@ void NativeCodeProcedure::Compile(InterCodeProcedure* proc)
|
||||||
{
|
{
|
||||||
mInterProc = proc;
|
mInterProc = proc;
|
||||||
|
|
||||||
CheckFunc = !strcmp(mInterProc->mIdent->mString, "plants_iterate");
|
CheckFunc = !strcmp(mInterProc->mIdent->mString, "edit_text");
|
||||||
|
|
||||||
int nblocks = proc->mBlocks.Size();
|
int nblocks = proc->mBlocks.Size();
|
||||||
tblocks = new NativeCodeBasicBlock * [nblocks];
|
tblocks = new NativeCodeBasicBlock * [nblocks];
|
||||||
|
|
Loading…
Reference in New Issue