about summary refs log tree commit diff stats
path: root/src/dynarec/dynarec_native.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2023-07-14 11:03:11 +0200
committerptitSeb <sebastien.chev@gmail.com>2023-07-14 11:03:11 +0200
commit3349757d0faec529b62ba62c99ee4d7adcc84d2c (patch)
tree5e77e8fe6e721541cd0a592d66ca002dc227d150 /src/dynarec/dynarec_native.c
parent066d7458ca6937a16656569ad0d4427a805a2cfe (diff)
downloadbox64-3349757d0faec529b62ba62c99ee4d7adcc84d2c.tar.gz
box64-3349757d0faec529b62ba62c99ee4d7adcc84d2c.zip
[DYNAREC] Fixed an issue with forward jump state retreival
Diffstat (limited to 'src/dynarec/dynarec_native.c')
-rwxr-xr-xsrc/dynarec/dynarec_native.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c
index 3ed6e003..a9611b23 100755
--- a/src/dynarec/dynarec_native.c
+++ b/src/dynarec/dynarec_native.c
@@ -301,6 +301,13 @@ static void fillPredecessors(dynarec_native_t* dyn)
             dyn->insts[dyn->insts[i].x64.jmp_insts].pred_sz++;
         }
     }
+    // remove "has_next" from orphean branch
+    for(int i=0; i<dyn->size-1; ++i) {
+        if(!dyn->insts[i].x64.has_next) {
+            if(dyn->insts[i+1].x64.has_next && !dyn->insts[i+1].pred_sz)
+                dyn->insts[i+1].x64.has_next = 0;
+        }
+    }
     // second the "has_next"
     for(int i=0; i<dyn->size-1; ++i) {
         if(dyn->insts[i].x64.has_next) {