Commit 2842e1e76ee for php
commit 2842e1e76ee0711e4668efb798d1707282c2a898
Author: ndossche <7771979+ndossche@users.noreply.github.com>
Date: Sun Oct 11 01:14:06 2026 +0200
Backport GH-24241 to 8.4
diff --git a/Zend/Optimizer/zend_inference.c b/Zend/Optimizer/zend_inference.c
index 0c24691ebba..7fa5530c130 100644
--- a/Zend/Optimizer/zend_inference.c
+++ b/Zend/Optimizer/zend_inference.c
@@ -5030,7 +5030,6 @@ ZEND_API bool zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op
case ZEND_SWITCH_STRING:
case ZEND_MATCH:
case ZEND_ISSET_ISEMPTY_VAR:
- case ZEND_ISSET_ISEMPTY_CV:
case ZEND_FUNC_NUM_ARGS:
case ZEND_FUNC_GET_ARGS:
case ZEND_COPY_TMP:
@@ -5121,6 +5120,12 @@ ZEND_API bool zend_may_throw_ex(const zend_op *opline, const zend_ssa_op *ssa_op
case ZEND_BOOL:
case ZEND_JMP_SET:
return (t1 & MAY_BE_OBJECT);
+ case ZEND_ISSET_ISEMPTY_CV:
+ if (!(opline->extended_value & ZEND_ISEMPTY)) {
+ return 0;
+ }
+ /* empty() casts to bool: objects may have a cast handler */
+ return (t1 & (MAY_BE_OBJECT|MAY_BE_DOUBLE));
case ZEND_BOOL_XOR:
return (t1 & MAY_BE_OBJECT) || (t2 & MAY_BE_OBJECT);
case ZEND_IS_EQUAL: