]> granicus.if.org Git - php/commitdiff
Fixed incorrect instruction cleanup
authorDmitry Stogov <dmitry@zend.com>
Wed, 28 Oct 2015 20:10:33 +0000 (23:10 +0300)
committerDmitry Stogov <dmitry@zend.com>
Wed, 28 Oct 2015 20:10:33 +0000 (23:10 +0300)
ext/opcache/Optimizer/pass1_5.c

index 0e4136032dca19d804f132a03868fe195dc5f257..2aba4db3e5e8a73923e1f5f9b58de5284eaf892c 100644 (file)
@@ -341,12 +341,12 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx)
                                                        zval_copy_ctor(&t);
                                                }
 
-                                               if (ZEND_OP1_TYPE(opline) == IS_CONST) {
-                                                       literal_dtor(&ZEND_OP1_LITERAL(opline));
-                                               } else {
-                                                       MAKE_NOP((opline - 1));
-                                               }
                                                if (zend_optimizer_replace_by_const(op_array, opline, IS_TMP_VAR, tv, &t)) {
+                                                       if (ZEND_OP1_TYPE(opline) == IS_CONST) {
+                                                               literal_dtor(&ZEND_OP1_LITERAL(opline));
+                                                       } else if (ZEND_OP1_TYPE(opline) == IS_VAR) {
+                                                               MAKE_NOP((opline - 1));
+                                                       }
                                                        literal_dtor(&ZEND_OP2_LITERAL(opline));
                                                        MAKE_NOP(opline);
                                                }