]> git.ipfire.org Git - thirdparty/gcc.git/commit
Fortran: fix DATA and derived types with pointer components [PR114474]
authorHarald Anlauf <anlauf@gmx.de>
Wed, 27 Mar 2024 20:18:04 +0000 (21:18 +0100)
committerHarald Anlauf <anlauf@gmx.de>
Sat, 6 Apr 2024 20:38:56 +0000 (22:38 +0200)
commit88abe04de2f16f773126f3908632a27568330cc9
tree1fd22c15fed5897a42ffd6db2e42018fc5c6d475
parent0611f480013fe998b9657a6b51d645c4b1489bbe
Fortran: fix DATA and derived types with pointer components [PR114474]

When matching actual arguments in match_actual_arg, these are initially
treated as a possible dummy procedure, assuming that the correct type is
determined later.  This resolution could fail when the procedure is a
derived type constructor with a pointer component and appears in a DATA
statement, where the pointer shall be associated with an initial data
target.  Check for those cases where the type obviously has not been
resolved yet, and which were missed because there was no component
reference.

gcc/fortran/ChangeLog:

PR fortran/114474
* primary.cc (gfc_variable_attr): Catch variables used in structure
constructors within DATA statements that are still tagged with a
temporary type BT_PROCEDURE from match_actual_arg and which have the
target attribute, and fix their typespec.

gcc/testsuite/ChangeLog:

PR fortran/114474
* gfortran.dg/data_pointer_3.f90: New test.

(cherry picked from commit bbb7c513dddc5c9b2d5e9b78bc1c2f85a0cfe07e)
gcc/fortran/primary.cc
gcc/testsuite/gfortran.dg/data_pointer_3.f90 [new file with mode: 0644]