From 5350952a3734f6a432cf6c57fafe9b735429e97c Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Mon, 25 Dec 2023 13:22:03 +0300 Subject: [PATCH] Fix assertion Fixes oss-fuzz #65233 --- Zend/zend_opcode.c | 2 +- ext/opcache/tests/opt/dce_014.phpt | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 ext/opcache/tests/opt/dce_014.phpt diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 3475bc4db3b..97110cf54c0 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -867,12 +867,12 @@ static bool keeps_op1_alive(zend_op *opline) { || opline->opcode == ZEND_SWITCH_STRING || opline->opcode == ZEND_MATCH || opline->opcode == ZEND_FETCH_LIST_R + || opline->opcode == ZEND_FETCH_LIST_W || opline->opcode == ZEND_COPY_TMP) { return 1; } ZEND_ASSERT(opline->opcode != ZEND_FE_FETCH_R && opline->opcode != ZEND_FE_FETCH_RW - && opline->opcode != ZEND_FETCH_LIST_W && opline->opcode != ZEND_VERIFY_RETURN_TYPE && opline->opcode != ZEND_BIND_LEXICAL && opline->opcode != ZEND_ROPE_ADD); diff --git a/ext/opcache/tests/opt/dce_014.phpt b/ext/opcache/tests/opt/dce_014.phpt new file mode 100644 index 00000000000..a803b527729 --- /dev/null +++ b/ext/opcache/tests/opt/dce_014.phpt @@ -0,0 +1,12 @@ +--TEST-- +DCE may remove FREE after FETCH_LIST_W +--FILE-- + +DONE +--EXPECT-- +DONE