From: Nikita Popov Date: Tue, 21 May 2019 15:17:30 +0000 (+0200) Subject: Merge branch 'PHP-7.3' into PHP-7.4 X-Git-Tag: php-7.4.0alpha1~224 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=436a47428bcc91a55b11bdb8acbb6fae763ff9e0;p=php Merge branch 'PHP-7.3' into PHP-7.4 --- 436a47428bcc91a55b11bdb8acbb6fae763ff9e0 diff --cc ext/opcache/Optimizer/sccp.c index b81c155bb6,1791f6a941..c9b6f4f3f4 --- a/ext/opcache/Optimizer/sccp.c +++ b/ext/opcache/Optimizer/sccp.c @@@ -1400,31 -1360,6 +1400,31 @@@ static void sccp_visit_instr(scdf_ctx * } return; } + case ZEND_ADD_ARRAY_UNPACK: { + zval *result = &ctx->values[ssa_op->result_use]; + if (IS_BOT(result) || IS_BOT(op1)) { + SET_RESULT_BOT(result); + return; + } + SKIP_IF_TOP(result); + SKIP_IF_TOP(op1); + + /* See comment for ADD_ARRAY_ELEMENT. */ - if (Z_TYPE(ctx->values[ssa_op->result_def]) == IS_NULL) { ++ if (Z_TYPE_P(result) == IS_NULL) { + SET_RESULT_BOT(result); + return; + } + ZVAL_COPY_VALUE(&zv, result); + ZVAL_NULL(result); + + if (ct_eval_add_array_unpack(&zv, op1) == SUCCESS) { + SET_RESULT(result, &zv); + } else { + SET_RESULT_BOT(result); + } + zval_ptr_dtor_nogc(&zv); + return; + } case ZEND_NEW: if (ssa_op->result_def >= 0 && ctx->scdf.ssa->vars[ssa_op->result_def].escape_state == ESCAPE_STATE_NO_ESCAPE) {