Merge branch 'PHP-8.3'

* PHP-8.3:
  Fix inference of COPY_TMP
This commit is contained in:
Ilija Tovilo 2023-11-07 12:04:24 +01:00
commit c01fb83fee
No known key found for this signature in database
GPG key ID: A4F5D403F118200A
3 changed files with 7 additions and 1 deletions

View file

@ -2697,7 +2697,10 @@ static zend_always_inline zend_result _zend_update_type_info(
UPDATE_SSA_TYPE(tmp, ssa_op->op1_def); UPDATE_SSA_TYPE(tmp, ssa_op->op1_def);
COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def); COPY_SSA_OBJ_TYPE(ssa_op->op1_use, ssa_op->op1_def);
} }
tmp = t1 & ~(MAY_BE_UNDEF|MAY_BE_REF); tmp = t1 & ~MAY_BE_UNDEF;
if (opline->opcode != ZEND_COPY_TMP || opline->op1_type != IS_VAR) {
tmp &= ~MAY_BE_REF;
}
if (t1 & MAY_BE_UNDEF) { if (t1 & MAY_BE_UNDEF) {
tmp |= MAY_BE_NULL; tmp |= MAY_BE_NULL;
} }

View file

@ -9516,6 +9516,7 @@ ZEND_VM_HANDLER(172, ZEND_FUNC_GET_ARGS, UNUSED|CONST, UNUSED)
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
} }
/* Contrary to what its name indicates, ZEND_COPY_TMP may receive and define references. */
ZEND_VM_HANDLER(167, ZEND_COPY_TMP, TMPVAR, UNUSED) ZEND_VM_HANDLER(167, ZEND_COPY_TMP, TMPVAR, UNUSED)
{ {
USE_OPLINE USE_OPLINE

View file

@ -11085,6 +11085,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FUNC_GET_ARGS_SPEC_CONST_UNUSE
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
} }
/* Contrary to what its name indicates, ZEND_COPY_TMP may receive and define references. */
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_DIV_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{ {
USE_OPLINE USE_OPLINE
@ -37183,6 +37184,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FUNC_GET_ARGS_SPEC_UNUSED_UNUS
ZEND_VM_NEXT_OPCODE(); ZEND_VM_NEXT_OPCODE();
} }
/* Contrary to what its name indicates, ZEND_COPY_TMP may receive and define references. */
static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CALLABLE_CONVERT_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS) static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_CALLABLE_CONVERT_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
{ {
USE_OPLINE USE_OPLINE