aboutsummaryrefslogtreecommitdiff
path: root/src/ARMJIT.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ARMJIT.cpp')
-rw-r--r--src/ARMJIT.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/ARMJIT.cpp b/src/ARMJIT.cpp
index 3ffb31d..fd57399 100644
--- a/src/ARMJIT.cpp
+++ b/src/ARMJIT.cpp
@@ -779,7 +779,8 @@ void CompileBlock(ARM* cpu)
JIT_DEBUGPRINT("merged BL\n");
}
- if (instrs[i].Info.Branches() && Config::JIT_BranchOptimisations)
+ if (instrs[i].Info.Branches() && Config::JIT_BranchOptimisations
+ && instrs[i].Info.Kind != (thumb ? ARMInstrInfo::tk_SVC : ARMInstrInfo::ak_SVC))
{
bool hasBranched = cpu->R[15] != r15;
@@ -845,6 +846,7 @@ void CompileBlock(ARM* cpu)
if (!hasBranched && cond < 0xE && i + 1 < Config::JIT_MaxBlockSize)
{
+ JIT_DEBUGPRINT("block lengthened by untaken branch\n");
instrs[i].Info.EndBlock = false;
instrs[i].BranchFlags |= branch_FollowCondNotTaken;
}