Improve const to immediate propagation
This commit is contained in:
parent
850bbfc31a
commit
42299c9406
|
@ -46032,6 +46032,16 @@ bool NativeCodeBasicBlock::PeepHoleOptimizerShuffle(int pass)
|
||||||
|
|
||||||
bool NativeCodeBasicBlock::PeepHoleOptimizerIterate1(int i, int pass)
|
bool NativeCodeBasicBlock::PeepHoleOptimizerIterate1(int i, int pass)
|
||||||
{
|
{
|
||||||
|
if (mIns[i].mMode == ASMIM_ABSOLUTE && mIns[i].mLinkerObject && (mIns[i].mLinkerObject->mFlags & LOBJF_CONST) &&
|
||||||
|
mIns[i].mLinkerObject->mReferences.Size() == 0 &&
|
||||||
|
!mIns[i].ChangesAddress() && HasAsmInstructionMode(mIns[i].mType, ASMIM_IMMEDIATE))
|
||||||
|
{
|
||||||
|
mIns[i].mMode = ASMIM_IMMEDIATE;
|
||||||
|
mIns[i].mAddress = mIns[i].mLinkerObject->mData[mIns[i].mAddress];
|
||||||
|
mIns[i].mLinkerObject = nullptr;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (mIns[i].mType == ASMIT_AND && mIns[i].mMode == ASMIM_IMMEDIATE && mIns[i].mAddress == 0)
|
if (mIns[i].mType == ASMIT_AND && mIns[i].mMode == ASMIM_IMMEDIATE && mIns[i].mAddress == 0)
|
||||||
{
|
{
|
||||||
mIns[i].mType = ASMIT_LDA;
|
mIns[i].mType = ASMIT_LDA;
|
||||||
|
|
Loading…
Reference in New Issue