On 5/6/25 9:51 AM, Steve Kargl wrote:
On Mon, May 05, 2025 at 08:30:09PM -0700, Jerry D wrote:
Attached patch fixes this by checking for BT_VOID and EXPR_FUNCTION.
Thank you for guidance from Steve in the PR and Vincent for
identifying the problem.
Two test case files added to the testsuite.
Regression tested on x86_64.
OK for mainline?
I see Paul has already given you the ok, which is fine with me.
One small nit below.
@@ -5955,30 +5955,40 @@ gfc_check_c_sizeof (gfc_expr *arg)
bool
gfc_check_c_associated (gfc_expr *c_ptr_1, gfc_expr *c_ptr_2)
{
- if (c_ptr_1->ts.type != BT_DERIVED
- || c_ptr_1->ts.u.derived->from_intmod != INTMOD_ISO_C_BINDING
- || (c_ptr_1->ts.u.derived->intmod_sym_id != ISOCBINDING_PTR
- && c_ptr_1->ts.u.derived->intmod_sym_id != ISOCBINDING_FUNPTR))
+ if (c_ptr_1)
I mostly did this for code readability. I noticed it was not being
checked before. It helps old buggers to organize their thoughts.
This test is not needed. c_ptr_1 is an required argument
to c_associated() and is guaranteed to be non-NULL at
this point.
{
<Deleted patch>
}
+ if (c_ptr_2)
This test is needed because c_ptr_2 is an optional argument.
If it is not present, it is guaranteed to be NULL.
Understood.
Thanks Steve for your assist.
Jerry