From f4bec6e1371b6bcb0069d9025d88bce003b11420 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 9 Feb 2016 12:16:17 +0300 Subject: [PATCH] After DFA pass result of FE_FETCH may be CV --- ext/opcache/Optimizer/zend_inference.c | 30 ++++++++++++-------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index aa78e3e7c3..2dab5aa954 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -3427,24 +3427,22 @@ static void zend_update_type_info(const zend_op_array *op_array, } } UPDATE_SSA_TYPE(tmp, ssa_ops[i].op2_def); - if (opline->result_type == IS_TMP_VAR) { - if (ssa_ops[i].result_def >= 0) { - tmp = MAY_BE_RC1; - if (t1 & MAY_BE_OBJECT) { - tmp |= MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; - } else if (t1 & MAY_BE_ARRAY) { - if (t1 & MAY_BE_ARRAY_KEY_LONG) { - tmp |= MAY_BE_LONG; - } - if (t1 & MAY_BE_ARRAY_KEY_STRING) { - tmp |= MAY_BE_STRING; - } - if (!(tmp & (MAY_BE_LONG|MAY_BE_STRING))) { - tmp |= MAY_BE_NULL; - } + if (ssa_ops[i].result_def >= 0) { + tmp = MAY_BE_RC1; + if (t1 & MAY_BE_OBJECT) { + tmp |= MAY_BE_RCN | MAY_BE_ANY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF; + } else if (t1 & MAY_BE_ARRAY) { + if (t1 & MAY_BE_ARRAY_KEY_LONG) { + tmp |= MAY_BE_LONG; + } + if (t1 & MAY_BE_ARRAY_KEY_STRING) { + tmp |= MAY_BE_STRING; + } + if (!(tmp & (MAY_BE_LONG|MAY_BE_STRING))) { + tmp |= MAY_BE_NULL; } - UPDATE_SSA_TYPE(tmp, ssa_ops[i].result_def); } + UPDATE_SSA_TYPE(tmp, ssa_ops[i].result_def); } break; // case ZEND_CATCH: -- 2.40.0