Le 10/10/2026 à 21:57, Jerry DeLisle a écrit :
See attached patch. Passing NULL() to an allocatable dummy of intrinsic
type ICEs on a gcc_assert in gfc_conv_procedure_call, which expects a
NULL() actual there only for an optional, non-allocatable dummy. Only
derived-type dummies were sent to conv_null_actual. The patch sends
non-class, non-character allocatable dummies there as well, and
conv_null_actual builds the null descriptor for them with
gfc_create_null_actual_descriptor, as it already does for derived types.
CLASS and CHARACTER allocatable dummies are left as they are.

Start with the condition in gfc_conv_procedure_call that selects
conv_null_actual, then the widened derived-type branch of
conv_null_actual, both in trans-expr.cc; the rest is the new test. The
bug was found with the Fujitsu compiler test suite; the test is new.

Regression tested on x86_64.

OK for mainline?

Regards,

Jerry

---

fortran: [PR125724] ICE passing NULL() to an allocatable dummy argument

Pass a NULL() actual argument for a non-class, non-character
allocatable dummy through conv_null_actual, as for derived-type
dummies.

Assisted-by: Claude Opus 5.5

        PR fortran/125724

gcc/fortran/ChangeLog:

        * trans-expr.cc (conv_null_actual): Handle intrinsic allocatable
        and pointer dummies.
        (gfc_conv_procedure_call): Use conv_null_actual for a NULL()
        actual with a non-class, non-character allocatable dummy.

gcc/testsuite/ChangeLog:

        * gfortran.dg/null_actual_8.f90: New test.
OK.

Reply via email to