summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorXinchen Hui <laruence@gmail.com>2017-10-17 19:47:40 +0800
committerXinchen Hui <laruence@gmail.com>2017-10-17 19:47:40 +0800
commit21f2ed6a6325a343b70f54a3812c845427a74e17 (patch)
tree367a83928b86c961c1d4cd36aafadf120f528ad8 /ext
parent801b467c73c5435c83d122549626ae1979b96414 (diff)
parente53a9aaa4aa091a0799ed5a078dc66ed04ff32b8 (diff)
downloadphp-git-21f2ed6a6325a343b70f54a3812c845427a74e17.tar.gz
Merge branch 'PHP-7.2'
* PHP-7.2: Fixed bug (assertion fails with extended info generated)
Diffstat (limited to 'ext')
-rw-r--r--ext/opcache/Optimizer/dce.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/ext/opcache/Optimizer/dce.c b/ext/opcache/Optimizer/dce.c
index 099a597998..5c432c1f94 100644
--- a/ext/opcache/Optimizer/dce.c
+++ b/ext/opcache/Optimizer/dce.c
@@ -488,6 +488,12 @@ static void dce_live_ranges(context *ctx, zend_op_array *op_array, zend_ssa *ssa
uint32_t var = live_range->var & ~ZEND_LIVE_MASK;
uint32_t def = live_range->start - 1;
+ if ((op_array->opcodes[def].result_type == IS_UNUSED) &&
+ (UNEXPECTED(op_array->opcodes[def].opcode == ZEND_EXT_STMT) ||
+ UNEXPECTED(op_array->opcodes[def].opcode == ZEND_EXT_FCALL_END))) {
+ def--;
+ }
+
if (op_array->opcodes[def].result_type == IS_UNUSED) {
if (op_array->opcodes[def].opcode == ZEND_DO_FCALL) {
/* constructor call */