This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Patch, fortran] PR57522 - [F03] ASSOCIATE construct creates array descriptor with incorrect stride for derived type array component


Dear All,

I am aware that we are in stage 4 but this wrong-code-on-valid PR is
confined to a corner of a corner and so I am certain that it can be
safely applied - OK, Richie?

This patch follows the same route as has been used for pointer array
assignment to components of derived type arrays by rolling out the
auxilliary 'span' variable for the associate-name to give it the
correct extent.  Once the array descriptor reform has been completed,
this fix should be removed. All such code can be found by grepping on
'subref_array', so the excision will be swift and painless :-)

Note that this is not needed for SELECT_TYPE since it is inaccessible
there: "component to the right of an array reference may not have
ALLOCATABLE or POINTER attribute"  && "class component must be
ALLOCATABLE or POINTER" = false for any selector that I have been able
to construct.

Bootstraps and regtests on FC17/x86_64 - OK for trunk and 4.8?

Cheers

Paul

2014-02-08  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/57522
    * resolve.c (resolve_assoc_var): Set the subref_array_pointer
    attribute for the 'associate-name' if necessary.
    * trans-stmt.c (trans_associate_var): If the 'associate-name'
    is a subref_array_pointer, assign the element size of the
    associate variable to 'span'.

2014-02-08  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/57522
    * gfortran.dg/associated_target_5.f03 : New test

Attachment: pr57522.diff
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]