diff --git a/Zend/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c index 759284f10459..af6c301fd934 100644 --- a/Zend/Optimizer/zend_inference.c +++ b/Zend/Optimizer/zend_inference.c @@ -3157,7 +3157,7 @@ static zend_always_inline zend_result _zend_update_type_info( } break; case ZEND_ASSIGN_OBJ_REF: - if (opline->op1_type == IS_CV) { + if (opline->op1_type == IS_CV && ssa_op->op1_def >= 0) { tmp = t1; if (tmp & MAY_BE_OBJECT) { tmp |= MAY_BE_RC1 | MAY_BE_RCN; diff --git a/Zend/Optimizer/zend_ssa.c b/Zend/Optimizer/zend_ssa.c index 590df8155e39..fd699620de2e 100644 --- a/Zend/Optimizer/zend_ssa.c +++ b/Zend/Optimizer/zend_ssa.c @@ -607,7 +607,7 @@ static zend_always_inline int _zend_ssa_rename_op(const zend_op_array *op_array, } break; case ZEND_ASSIGN_OBJ_REF: - if (opline->op1_type == IS_CV) { + if ((build_flags & ZEND_SSA_RC_INFERENCE) && opline->op1_type == IS_CV) { ssa_ops[k].op1_def = ssa_vars_count; var[EX_VAR_TO_NUM(opline->op1.var)] = ssa_vars_count; ssa_vars_count++;