@@ -4156,11 +4156,13 @@ ZEND_VM_HOT_HANDLER(131, ZEND_DO_FCALL_BY_NAME, ANY, ANY, SPEC(RETVAL,OBSERVER))
41564156 SAVE_OPLINE ();
41574157 EX (call ) = call -> prev_execute_data ;
41584158
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 )) {
41604162 if ((fbc -> common .fn_flags & ZEND_ACC_DEPRECATED ) != 0 ) {
41614163 zend_deprecated_function (fbc );
41624164 }
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 ) {
41644166 zend_nodiscard_function ("(B)" , fbc );
41654167 }
41664168 if (UNEXPECTED (EG (exception ) != NULL )) {
@@ -4265,11 +4267,13 @@ ZEND_VM_HOT_HANDLER(60, ZEND_DO_FCALL, ANY, ANY, SPEC(RETVAL,OBSERVER))
42654267 SAVE_OPLINE ();
42664268 EX (call ) = call -> prev_execute_data ;
42674269
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 )) {
42694273 if ((fbc -> common .fn_flags & ZEND_ACC_DEPRECATED ) != 0 ) {
42704274 zend_deprecated_function (fbc );
42714275 }
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 ) {
42734277 zend_nodiscard_function ("(A)" , fbc );
42744278 }
42754279 if (UNEXPECTED (EG (exception ) != NULL )) {
0 commit comments