From: Dmitry Stogov <dmitry@zend.com>
Date: Wed, 28 Oct 2015 20:10:33 +0000 (+0300)
Subject: Fixed incorrect instruction cleanup
X-Git-Tag: php-7.1.0alpha2~40^2~36^2~4
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=da8e6ec4a5063d9f60f83f43c55bc17d015cac8b;p=php

Fixed incorrect instruction cleanup
---

diff --git a/ext/opcache/Optimizer/pass1_5.c b/ext/opcache/Optimizer/pass1_5.c
index 0e4136032d..2aba4db3e5 100644
--- a/ext/opcache/Optimizer/pass1_5.c
+++ b/ext/opcache/Optimizer/pass1_5.c
@@ -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);
 						}