This patch fixes PR97045 - unlimited polymorphic array element selectors.
authorPaul Thomas <pault@gcc.gnu.org>
Wed, 30 Sep 2020 12:44:39 +0000 (13:44 +0100)
committerPaul Thomas <pault@gcc.gnu.org>
Wed, 30 Sep 2020 12:44:39 +0000 (13:44 +0100)
commitfcc4891d7f3bff1a3f7428f12830bc942989306c
treeb26ee228d65681be27def3adf906e19309b11f08
parentbae974e637421263e8854a69b83284fa6309f9a1
This patch fixes PR97045 - unlimited polymorphic array element selectors.

2020-30-09  Paul Thomas  <pault@gcc.gnu.org>

gcc/fortran
PR fortran/97045
* trans-array.c (gfc_conv_array_ref): Make sure that the class
decl is passed to build_array_ref in the case of unlimited
polymorphic entities.
* trans-expr.c (gfc_conv_derived_to_class): Ensure that array
refs do not preceed the _len component. Free the _len expr.
* trans-stmt.c (trans_associate_var): Reset 'need_len_assign'
for polymorphic scalars.
* trans.c (gfc_build_array_ref): When the vptr size is used for
span, multiply by the _len field of unlimited polymorphic
entities, when non-zero.

gcc/testsuite/
PR fortran/97045
* gfortran.dg/select_type_50.f90 : New test.
gcc/fortran/trans-array.c
gcc/fortran/trans-expr.c
gcc/fortran/trans-stmt.c
gcc/fortran/trans.c
gcc/testsuite/gfortran.dg/select_type_50.f90 [new file with mode: 0644]