diff options
| -rw-r--r-- | src/dynarec/dynarec_native.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c index 2482aa08..794ac426 100644 --- a/src/dynarec/dynarec_native.c +++ b/src/dynarec/dynarec_native.c @@ -350,14 +350,10 @@ static int updateNeed(dynarec_native_t* dyn, int ninst, uint8_t need) { while (ninst>=0) { // need pending but instruction is only a subset: remove pend and use an X_ALL instead need |= dyn->insts[ninst].x64.need_after; - if((need&X_PEND) && (dyn->insts[ninst].x64.state_flags==SF_SUBSET)) { + if((need&X_PEND) && (dyn->insts[ninst].x64.state_flags==SF_SUBSET || dyn->insts[ninst].x64.state_flags==SF_SET || dyn->insts[ninst].x64.state_flags==SF_SET_NODF)) { need &=~X_PEND; need |= X_ALL; } - if((need&X_PEND) && (dyn->insts[ninst].x64.state_flags==SF_SET || dyn->insts[ninst].x64.state_flags==SF_SET_NODF)) { - need &=~X_PEND; - need |= dyn->insts[ninst].x64.set_flags; // SF_SET will compute all flags, it's not SUBSET! - } if((need&X_PEND) && dyn->insts[ninst].x64.state_flags==SF_SUBSET_PENDING) { need |= X_ALL&~(dyn->insts[ninst].x64.set_flags); } |