From 172d8552fc2ddb4e70a03f463f695de174aacf5c Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Wed, 4 May 2016 23:59:17 +0300 Subject: [PATCH] Fixed type inference rules. --- ext/opcache/Optimizer/zend_inference.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ext/opcache/Optimizer/zend_inference.c b/ext/opcache/Optimizer/zend_inference.c index b853a2e55c..5f039b68dc 100644 --- a/ext/opcache/Optimizer/zend_inference.c +++ b/ext/opcache/Optimizer/zend_inference.c @@ -2425,12 +2425,12 @@ static void zend_update_type_info(const zend_op_array *op_array, orig = 0; if (opline->extended_value == ZEND_ASSIGN_OBJ) { tmp = MAY_BE_RC1; - orig = t1; + orig = t1 & ~MAY_BE_UNDEF; t1 = MAY_BE_ANY; t2 = OP1_DATA_INFO(); } else if (opline->extended_value == ZEND_ASSIGN_DIM) { tmp = MAY_BE_RC1; - orig = t1; + orig = t1 & ~MAY_BE_UNDEF; t1 = zend_array_element_type(t1, 1, 0); t2 = OP1_DATA_INFO(); } else { @@ -2524,7 +2524,7 @@ static void zend_update_type_info(const zend_op_array *op_array, goto unknown_opcode; } else if (opline->extended_value == ZEND_ASSIGN_DIM) { tmp = MAY_BE_RC1; - orig = t1; + orig = t1 & ~MAY_BE_UNDEF; t1 = zend_array_element_type(t1, 1, 0); t2 = OP1_DATA_INFO(); } else { @@ -2587,7 +2587,7 @@ static void zend_update_type_info(const zend_op_array *op_array, goto unknown_opcode; } else if (opline->extended_value == ZEND_ASSIGN_DIM) { tmp = MAY_BE_RC1; - orig = t1; + orig = t1 & ~MAY_BE_UNDEF; t1 = zend_array_element_type(t1, 1, 0); t2 = OP1_DATA_INFO(); } else { @@ -2641,7 +2641,7 @@ static void zend_update_type_info(const zend_op_array *op_array, goto unknown_opcode; } else if (opline->extended_value == ZEND_ASSIGN_DIM) { tmp = MAY_BE_RC1; - orig = t1; + orig = t1 & ~MAY_BE_UNDEF; t1 = zend_array_element_type(t1, 1, 0); t2 = OP1_DATA_INFO(); } else { @@ -2689,7 +2689,7 @@ static void zend_update_type_info(const zend_op_array *op_array, goto unknown_opcode; } else if (opline->extended_value == ZEND_ASSIGN_DIM) { tmp = MAY_BE_RC1; - orig = t1; + orig = t1 & ~MAY_BE_UNDEF; t1 = zend_array_element_type(t1, 1, 0); t2 = OP1_DATA_INFO(); } else { @@ -2736,7 +2736,7 @@ static void zend_update_type_info(const zend_op_array *op_array, goto unknown_opcode; } else if (opline->extended_value == ZEND_ASSIGN_DIM) { tmp = MAY_BE_RC1; - orig = t1; + orig = t1 & ~MAY_BE_UNDEF; t1 = zend_array_element_type(t1, 1, 0); t2 = OP1_DATA_INFO(); } else { @@ -2785,7 +2785,7 @@ static void zend_update_type_info(const zend_op_array *op_array, goto unknown_opcode; } else if (opline->extended_value == ZEND_ASSIGN_DIM) { tmp = MAY_BE_RC1; - orig = t1; + orig = t1 & ~MAY_BE_UNDEF; t1 = zend_array_element_type(t1, 1, 0); t2 = OP1_DATA_INFO(); } else { -- 2.50.1