@@ -2936,12 +2936,6 @@ ZEND_VM_HOT_HELPER(zend_leave_helper, ANY, ANY)
2936
2936
OBJ_RELEASE (ZEND_CLOSURE_OBJECT (EX (func )));
2937
2937
}
2938
2938
EG (vm_stack_top ) = (zval * )execute_data ;
2939
-
2940
- if (UNEXPECTED ((EX (func )-> common .fn_flags & ZEND_ACC_NODISCARD ) != 0 ) && !EX (return_value )) {
2941
- zend_function * fbc = EX (func );
2942
- zend_nodiscard_function ("(F)" , fbc );
2943
- }
2944
-
2945
2939
execute_data = EX (prev_execute_data );
2946
2940
2947
2941
if (UNEXPECTED (EG (exception ) != NULL )) {
@@ -2977,11 +2971,6 @@ ZEND_VM_HOT_HELPER(zend_leave_helper, ANY, ANY)
2977
2971
}
2978
2972
2979
2973
old_execute_data = execute_data ;
2980
- if (UNEXPECTED ((EX (func )-> common .fn_flags & ZEND_ACC_NODISCARD ) != 0 ) && !EX (return_value )) {
2981
- zend_function * fbc = EX (func );
2982
- zend_nodiscard_function ("(E)" , fbc );
2983
- }
2984
-
2985
2974
execute_data = EX (prev_execute_data );
2986
2975
zend_vm_stack_free_call_frame_ex (call_info , old_execute_data );
2987
2976
@@ -3001,8 +2990,6 @@ ZEND_VM_HOT_HELPER(zend_leave_helper, ANY, ANY)
3001
2990
destroy_op_array (& EX (func )-> op_array );
3002
2991
efree_size (EX (func ), sizeof (zend_op_array ));
3003
2992
old_execute_data = execute_data ;
3004
- ZEND_ASSERT (EX (return_value ));
3005
-
3006
2993
execute_data = EG (current_execute_data ) = EX (prev_execute_data );
3007
2994
zend_vm_stack_free_call_frame_ex (call_info , old_execute_data );
3008
2995
@@ -3023,12 +3010,6 @@ ZEND_VM_HOT_HELPER(zend_leave_helper, ANY, ANY)
3023
3010
} else {
3024
3011
if (EXPECTED ((call_info & ZEND_CALL_CODE ) == 0 )) {
3025
3012
EG (current_execute_data ) = EX (prev_execute_data );
3026
-
3027
- if (UNEXPECTED ((EX (func )-> common .fn_flags & ZEND_ACC_NODISCARD ) != 0 ) && !EX (return_value )) {
3028
- zend_function * fbc = EX (func );
3029
- zend_nodiscard_function ("(G)" , fbc );
3030
- }
3031
-
3032
3013
i_free_compiled_variables (execute_data );
3033
3014
#ifdef ZEND_PREFER_RELOAD
3034
3015
call_info = EX_CALL_INFO ();
@@ -4127,9 +4108,6 @@ ZEND_VM_HOT_HANDLER(129, ZEND_DO_ICALL, ANY, ANY, SPEC(RETVAL,OBSERVER))
4127
4108
}
4128
4109
4129
4110
if (!RETURN_VALUE_USED (opline )) {
4130
- if (UNEXPECTED ((fbc -> common .fn_flags & ZEND_ACC_NODISCARD ) != 0 )) {
4131
- zend_nodiscard_function ("(C)" , fbc );
4132
- }
4133
4111
i_zval_ptr_dtor (ret );
4134
4112
}
4135
4113
@@ -4178,8 +4156,13 @@ ZEND_VM_HOT_HANDLER(131, ZEND_DO_FCALL_BY_NAME, ANY, ANY, SPEC(RETVAL,OBSERVER))
4178
4156
SAVE_OPLINE ();
4179
4157
EX (call ) = call -> prev_execute_data ;
4180
4158
4181
- if (UNEXPECTED ((fbc -> common .fn_flags & ZEND_ACC_DEPRECATED ) != 0 )) {
4182
- zend_deprecated_function (fbc );
4159
+ if (UNEXPECTED ((fbc -> common .fn_flags & (ZEND_ACC_DEPRECATED |ZEND_ACC_NODISCARD )) != 0 )) {
4160
+ if ((fbc -> common .fn_flags & ZEND_ACC_DEPRECATED ) != 0 ) {
4161
+ zend_deprecated_function (fbc );
4162
+ }
4163
+ if (EG (exception ) == NULL && (fbc -> common .fn_flags & ZEND_ACC_NODISCARD ) != 0 && !RETURN_VALUE_USED (opline )) {
4164
+ zend_nodiscard_function ("(B)" , fbc );
4165
+ }
4183
4166
if (UNEXPECTED (EG (exception ) != NULL )) {
4184
4167
UNDEF_RESULT ();
4185
4168
if (!RETURN_VALUE_USED (opline )) {
@@ -4259,9 +4242,6 @@ ZEND_VM_C_LABEL(fcall_by_name_end):
4259
4242
}
4260
4243
4261
4244
if (!RETURN_VALUE_USED (opline )) {
4262
- if (UNEXPECTED ((fbc -> common .fn_flags & ZEND_ACC_NODISCARD ) != 0 )) {
4263
- zend_nodiscard_function ("(B)" , fbc );
4264
- }
4265
4245
i_zval_ptr_dtor (ret );
4266
4246
}
4267
4247
}
@@ -4285,8 +4265,13 @@ ZEND_VM_HOT_HANDLER(60, ZEND_DO_FCALL, ANY, ANY, SPEC(RETVAL,OBSERVER))
4285
4265
SAVE_OPLINE ();
4286
4266
EX (call ) = call -> prev_execute_data ;
4287
4267
4288
- if (UNEXPECTED ((fbc -> common .fn_flags & ZEND_ACC_DEPRECATED ) != 0 )) {
4289
- zend_deprecated_function (fbc );
4268
+ if (UNEXPECTED ((fbc -> common .fn_flags & (ZEND_ACC_DEPRECATED |ZEND_ACC_NODISCARD )) != 0 )) {
4269
+ if ((fbc -> common .fn_flags & ZEND_ACC_DEPRECATED ) != 0 ) {
4270
+ zend_deprecated_function (fbc );
4271
+ }
4272
+ if (EG (exception ) == NULL && (fbc -> common .fn_flags & ZEND_ACC_NODISCARD ) != 0 && !RETURN_VALUE_USED (opline )) {
4273
+ zend_nodiscard_function ("(A)" , fbc );
4274
+ }
4290
4275
if (UNEXPECTED (EG (exception ) != NULL )) {
4291
4276
if (UNEXPECTED (ZEND_CALL_INFO (call ) & ZEND_CALL_CLOSURE )) {
4292
4277
OBJ_RELEASE (ZEND_CLOSURE_OBJECT (call -> func ));
@@ -4376,9 +4361,6 @@ ZEND_VM_C_LABEL(fcall_end):
4376
4361
}
4377
4362
4378
4363
if (!RETURN_VALUE_USED (opline )) {
4379
- if (UNEXPECTED ((fbc -> common .fn_flags & ZEND_ACC_NODISCARD ) != 0 )) {
4380
- zend_nodiscard_function ("(A)" , fbc );
4381
- }
4382
4364
i_zval_ptr_dtor (ret );
4383
4365
}
4384
4366
}
0 commit comments