Hi Paul, thanks for quick review. Comitted as r237105 for trunk. And r237107 for branch-6.
Thanks again and regards, Andre On Sun, 5 Jun 2016 17:44:19 +0200 Paul Richard Thomas <paul.richard.tho...@gmail.com> wrote: > Hi Andre, > > That's verging on 'obvious' and even does the job :-) > > OK for trunk and 6-branch. > > Thanks for the patch > > Paul > > On 5 June 2016 at 16:13, Andre Vehreschild <ve...@gmx.de> wrote: > > Hi Paul, > > > > now with attachment. > > > > - Andre > > > > On Sun, 5 Jun 2016 16:06:09 +0200 > > Paul Richard Thomas <paul.richard.tho...@gmail.com> wrote: > > > >> Hi Andre, > >> > >> There's no attachment. Get it posted tonight and I will take a look at it. > >> > >> Cheers > >> > >> Paul > >> > >> On 5 June 2016 at 14:04, Andre Vehreschild <ve...@gmx.de> wrote: > >> > Ping! > >> > > >> > On Sun, 22 May 2016 18:51:22 +0200 > >> > Andre Vehreschild <ve...@gmx.de> wrote: > >> > > >> >> Hi all, > >> >> > >> >> attached patch fixes a regression that occurred on some testcases when > >> >> doing a validation run with -frepack-arrays. The issue here was that > >> >> for class arrays the array descriptor is in the _data component and not > >> >> directly at the address of the class_array. The patch fixes this issue > >> >> for pr69659 on trunk 7 and gcc-6-branch. > >> >> > >> >> Ok for trunk and gcc-6? > >> >> > >> >> Bootstrapped and regtested on x86_64-linux-gnu. > >> >> > >> >> Regards, > >> >> Andre > >> > > >> > > >> > -- > >> > Andre Vehreschild * Email: vehre ad gmx dot de > >> > >> > >> > > > > > > -- > > Andre Vehreschild * Email: vehre ad gmx dot de > > > -- Andre Vehreschild * Email: vehre ad gmx dot de
Index: gcc/testsuite/gfortran.dg/class_array_22.f03 =================================================================== --- gcc/testsuite/gfortran.dg/class_array_22.f03 (nicht existent) +++ gcc/testsuite/gfortran.dg/class_array_22.f03 (Revision 237105) @@ -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_har...@bigpond.com> +! Reduced by Janus Weil <ja...@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 + Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (Revision 237104) +++ gcc/testsuite/ChangeLog (Arbeitskopie) @@ -1,3 +1,8 @@ +2016-06-05 Andre Vehreschild <ve...@gcc.gnu.org> + + PR fortran/69659 + * gfortran.dg/class_array_22.f03: New test. + 2016-06-05 Jan Hubicka <hubi...@ucw.cz> * gcc.dg/tree-prof/peel-1.c: Fix testcase. Index: gcc/fortran/trans-array.c =================================================================== --- gcc/fortran/trans-array.c (Revision 237104) +++ gcc/fortran/trans-array.c (Arbeitskopie) @@ -6386,7 +6386,12 @@ 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); Index: gcc/fortran/ChangeLog =================================================================== --- gcc/fortran/ChangeLog (Revision 237104) +++ gcc/fortran/ChangeLog (Arbeitskopie) @@ -1,3 +1,10 @@ +2016-06-05 Andre Vehreschild <ve...@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 <clt...@codesourcery.com> * trans-openmp.c (gfc_trans_omp_reduction_list): Add mark_addressable
Index: gcc/fortran/ChangeLog =================================================================== --- gcc/fortran/ChangeLog (Revision 237101) +++ gcc/fortran/ChangeLog (Arbeitskopie) @@ -1,3 +1,10 @@ +2016-06-05 Andre Vehreschild <ve...@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-01 Paul Thomas <pa...@gcc.gnu.org> PR fortran/71156 Index: gcc/fortran/trans-array.c =================================================================== --- gcc/fortran/trans-array.c (Revision 237101) +++ gcc/fortran/trans-array.c (Arbeitskopie) @@ -6376,7 +6376,12 @@ 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); Index: gcc/testsuite/ChangeLog =================================================================== --- gcc/testsuite/ChangeLog (Revision 237101) +++ gcc/testsuite/ChangeLog (Arbeitskopie) @@ -1,3 +1,8 @@ +2016-06-05 Andre Vehreschild <ve...@gcc.gnu.org> + + PR fortran/69659 + * gfortran.dg/class_array_22.f03: New test. + 2016-06-03 Bill Schmidt <wschm...@linux.vnet.ibm.com> PR target/70957 Index: gcc/testsuite/gfortran.dg/class_array_22.f03 =================================================================== --- gcc/testsuite/gfortran.dg/class_array_22.f03 (nicht existent) +++ gcc/testsuite/gfortran.dg/class_array_22.f03 (Arbeitskopie) @@ -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_har...@bigpond.com> +! Reduced by Janus Weil <ja...@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 +