diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/dynarec_native.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/dynarec/dynarec_native.c b/src/dynarec/dynarec_native.c index 2aade27f..98486d55 100644 --- a/src/dynarec/dynarec_native.c +++ b/src/dynarec/dynarec_native.c @@ -356,11 +356,11 @@ static int updateNeed(dynarec_native_t* dyn, int ninst, uint8_t need) { dyn->insts[ninst].x64.gen_flags |= X_PEND; dyn->insts[ninst].x64.need_after = need; need = dyn->insts[ninst].x64.need_after&~dyn->insts[ninst].x64.gen_flags; + if(dyn->insts[ninst].x64.may_set) need |= dyn->insts[ninst].x64.gen_flags; // forward the flags - // Consume X_PEND if relevant - if((need&X_PEND) && (dyn->insts[ninst].x64.set_flags&SF_PENDING)) - need &=~X_PEND; + else if((need&X_PEND) && (dyn->insts[ninst].x64.set_flags&SF_PENDING)) + need &=~X_PEND; // Consume X_PEND if relevant need |= dyn->insts[ninst].x64.use_flags; if(dyn->insts[ninst].x64.need_before == need) return ninst - 1; |