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

Reply via email to