@@ -4156,11 +4156,13 @@ ZEND_VM_HOT_HANDLER(131, ZEND_DO_FCALL_BY_NAME, ANY, ANY, SPEC(RETVAL,OBSERVER))
4156
4156
SAVE_OPLINE ();
4157
4157
EX (call ) = call -> prev_execute_data ;
4158
4158
4159
- if (UNEXPECTED ((fbc -> common .fn_flags & (ZEND_ACC_DEPRECATED |ZEND_ACC_NODISCARD )) != 0 )) {
4159
+ const uint32_t no_discard = (!RETURN_VALUE_USED (opline )) * ZEND_ACC_NODISCARD ;
4160
+
4161
+ if (UNEXPECTED ((fbc -> common .fn_flags & (ZEND_ACC_DEPRECATED |no_discard )) != 0 )) {
4160
4162
if ((fbc -> common .fn_flags & ZEND_ACC_DEPRECATED ) != 0 ) {
4161
4163
zend_deprecated_function (fbc );
4162
4164
}
4163
- if (EG ( exception ) == NULL && ( fbc -> common .fn_flags & ZEND_ACC_NODISCARD ) != 0 && ! RETURN_VALUE_USED ( opline ) ) {
4165
+ if (( fbc -> common .fn_flags & no_discard ) != 0 && EG ( exception ) == NULL ) {
4164
4166
zend_nodiscard_function ("(B)" , fbc );
4165
4167
}
4166
4168
if (UNEXPECTED (EG (exception ) != NULL )) {
@@ -4265,11 +4267,13 @@ ZEND_VM_HOT_HANDLER(60, ZEND_DO_FCALL, ANY, ANY, SPEC(RETVAL,OBSERVER))
4265
4267
SAVE_OPLINE ();
4266
4268
EX (call ) = call -> prev_execute_data ;
4267
4269
4268
- if (UNEXPECTED ((fbc -> common .fn_flags & (ZEND_ACC_DEPRECATED |ZEND_ACC_NODISCARD )) != 0 )) {
4270
+ const uint32_t no_discard = (!RETURN_VALUE_USED (opline )) * ZEND_ACC_NODISCARD ;
4271
+
4272
+ if (UNEXPECTED ((fbc -> common .fn_flags & (ZEND_ACC_DEPRECATED |no_discard )) != 0 )) {
4269
4273
if ((fbc -> common .fn_flags & ZEND_ACC_DEPRECATED ) != 0 ) {
4270
4274
zend_deprecated_function (fbc );
4271
4275
}
4272
- if (EG ( exception ) == NULL && ( fbc -> common .fn_flags & ZEND_ACC_NODISCARD ) != 0 && ! RETURN_VALUE_USED ( opline ) ) {
4276
+ if (( fbc -> common .fn_flags & no_discard ) != 0 && EG ( exception ) == NULL ) {
4273
4277
zend_nodiscard_function ("(A)" , fbc );
4274
4278
}
4275
4279
if (UNEXPECTED (EG (exception ) != NULL )) {
0 commit comments