summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2016-11-17 10:42:31 +0300
committerDmitry Stogov <dmitry@zend.com>2016-11-17 10:42:31 +0300
commit03ad53741fe052aca884f24bb430acc195cfffe6 (patch)
tree22750858cb800d0c5129895f5b53ee3e8fa28950
parent7f196e321fa464075248eced7d0d2c046b686b24 (diff)
parentf8f35d0d4e297fbed763e5da8467b9cc67ebd42b (diff)
downloadphp-git-03ad53741fe052aca884f24bb430acc195cfffe6.tar.gz
Merge branch 'PHP-7.1'
* PHP-7.1: VERIFY_RETURN_TYPE on references can't be eliminated
-rw-r--r--ext/opcache/Optimizer/dfa_pass.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ext/opcache/Optimizer/dfa_pass.c b/ext/opcache/Optimizer/dfa_pass.c
index 63faaf62c3..b7a0f065f7 100644
--- a/ext/opcache/Optimizer/dfa_pass.c
+++ b/ext/opcache/Optimizer/dfa_pass.c
@@ -312,6 +312,10 @@ static inline zend_bool can_elide_return_type_check(
zend_ssa_var_info *use_info = &ssa->var_info[ssa_op->op1_use];
zend_ssa_var_info *def_info = &ssa->var_info[ssa_op->op1_def];
+ if (use_info->type & MAY_BE_REF) {
+ return 0;
+ }
+
/* A type is possible that is not in the allowed types */
if ((use_info->type & (MAY_BE_ANY|MAY_BE_UNDEF)) & ~(def_info->type & MAY_BE_ANY)) {
return 0;