Fix in block branch collides with fcall proxy generation

This commit is contained in:
drmortalwombat 2024-11-05 08:17:18 +01:00
parent 020534dbc8
commit 5a0f736d41

View File

@ -54607,8 +54607,13 @@ void NativeCodeGenerator::RegisterFunctionCall(NativeCodeBasicBlock* block, int
i -= 2; i -= 2;
} }
if (i < at) if (i < at)
{ {
// Check conflicting local branch
if (i > 0 && block->mIns[i - 1].mMode == ASMIM_RELATIVE && block->mIns[i - 1].mAddress > 0)
return;
FunctionCall* ncp = new FunctionCall(); FunctionCall* ncp = new FunctionCall();
ncp->mLinkerObject = lo; ncp->mLinkerObject = lo;
ncp->mOffset = block->mIns[at].mAddress; ncp->mOffset = block->mIns[at].mAddress;
@ -54676,6 +54681,10 @@ bool NativeCodeGenerator::MergeFunctionCall(NativeCodeBasicBlock* block, int at)
if (i < at) if (i < at)
{ {
// Check conflicting local branch
if (i > 0 && block->mIns[i - 1].mMode == ASMIM_RELATIVE && block->mIns[i - 1].mAddress > 0)
return false;
FunctionCall ncp; FunctionCall ncp;
ncp.mLinkerObject = lo; ncp.mLinkerObject = lo;
ncp.mOffset = block->mIns[at].mAddress; ncp.mOffset = block->mIns[at].mAddress;