re PR fortran/69659 (ICE on using option -frepack-arrays, in gfc_conv_descriptor_data_get)

gcc/testsuite/ChangeLog:

2016-06-05  Andre Vehreschild  <vehre@gcc.gnu.org>

	PR fortran/69659
	* gfortran.dg/class_array_22.f03: New test.


gcc/fortran/ChangeLog:

2016-06-05  Andre Vehreschild  <vehre@gcc.gnu.org>

	PR fortran/69659
	* trans-array.c (gfc_trans_dummy_array_bias): For class arrays use
	the address of the _data component to reference the arrays data
	component.

From-SVN: r237105
This commit is contained in:
Andre Vehreschild 2016-06-05 19:20:54 +02:00
parent ec81960e85
commit b2d83bd2c7
4 changed files with 43 additions and 1 deletions

View file

@ -1,3 +1,10 @@
2016-06-05 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/69659
* trans-array.c (gfc_trans_dummy_array_bias): For class arrays use
the address of the _data component to reference the arrays data
component.
2016-06-03 Chung-Lin Tang <cltang@codesourcery.com>
* trans-openmp.c (gfc_trans_omp_reduction_list): Add mark_addressable

View file

@ -6386,7 +6386,12 @@ gfc_trans_dummy_array_bias (gfc_symbol * sym, tree tmpdesc,
stmtCleanup = gfc_finish_block (&cleanup);
/* Only do the cleanup if the array was repacked. */
tmp = build_fold_indirect_ref_loc (input_location, dumdesc);
if (is_classarray)
/* For a class array the dummy array descriptor is in the _class
component. */
tmp = gfc_class_data_get (dumdesc);
else
tmp = build_fold_indirect_ref_loc (input_location, dumdesc);
tmp = gfc_conv_descriptor_data_get (tmp);
tmp = fold_build2_loc (input_location, NE_EXPR, boolean_type_node,
tmp, tmpdesc);

View file

@ -1,3 +1,8 @@
2016-06-05 Andre Vehreschild <vehre@gcc.gnu.org>
PR fortran/69659
* gfortran.dg/class_array_22.f03: New test.
2016-06-05 Jan Hubicka <hubicka@ucw.cz>
* gcc.dg/tree-prof/peel-1.c: Fix testcase.

View file

@ -0,0 +1,25 @@
! { dg-do compile }
! { dg-options "-frepack-arrays " }
!
! Original class_array_11.f03 but with -frepack-arrays a new
! ICE was produced reported in
! PR fortran/69659
!
! Original testcase by Ian Harvey <ian_harvey@bigpond.com>
! Reduced by Janus Weil <Janus@gcc.gnu.org>
IMPLICIT NONE
TYPE :: ParentVector
INTEGER :: a
END TYPE ParentVector
CONTAINS
SUBROUTINE vector_operation(pvec)
CLASS(ParentVector), INTENT(INOUT) :: pvec(:)
print *,pvec(1)%a
END SUBROUTINE
END