diff options
Diffstat (limited to 'src/lj_opt_mem.c')
-rw-r--r-- | src/lj_opt_mem.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/lj_opt_mem.c b/src/lj_opt_mem.c index 9c22362b..cad85bb7 100644 --- a/src/lj_opt_mem.c +++ b/src/lj_opt_mem.c | |||
@@ -669,6 +669,8 @@ TRef LJ_FASTCALL lj_opt_fwd_xload(jit_State *J) | |||
669 | 669 | ||
670 | if ((fins->op2 & IRXLOAD_READONLY)) | 670 | if ((fins->op2 & IRXLOAD_READONLY)) |
671 | goto cselim; | 671 | goto cselim; |
672 | if ((fins->op2 & IRXLOAD_VOLATILE)) | ||
673 | goto doemit; | ||
672 | 674 | ||
673 | /* Search for conflicting stores. */ | 675 | /* Search for conflicting stores. */ |
674 | ref = J->chain[IR_XSTORE]; | 676 | ref = J->chain[IR_XSTORE]; |
@@ -721,7 +723,8 @@ cselim: | |||
721 | xr = IR(xref); | 723 | xr = IR(xref); |
722 | goto retry; /* Retry with the reassociated reference. */ | 724 | goto retry; /* Retry with the reassociated reference. */ |
723 | } | 725 | } |
724 | return lj_ir_emit(J); | 726 | doemit: |
727 | return EMITFOLD; | ||
725 | } | 728 | } |
726 | 729 | ||
727 | /* XSTORE elimination. */ | 730 | /* XSTORE elimination. */ |