This is the mail archive of the
fortran@gcc.gnu.org
mailing list for the GNU Fortran project.
Re: Ping! [fortran, patch, pr69659, v1] [6/7 Regression] ICE on using option -frepack-arrays, in gfc_conv_descriptor_data_get
- From: Andre Vehreschild <vehre at gmx dot de>
- To: Paul Richard Thomas <paul dot richard dot thomas at gmail dot com>
- Cc: "fortran at gcc dot gnu dot org" <fortran at gcc dot gnu dot org>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Sun, 5 Jun 2016 20:09:52 +0200
- Subject: Re: Ping! [fortran, patch, pr69659, v1] [6/7 Regression] ICE on using option -frepack-arrays, in gfc_conv_descriptor_data_get
- Authentication-results: sourceware.org; auth=none
- References: <20160522185122 dot 20972f20 at vepi2> <20160605140459 dot 4d0e5ed3 at vepi2> <CAGkQGiJ6KH+e_UyPe+=RwBOr1DGVhMpBDPHmNq_XZVpy3AXZFQ at mail dot gmail dot com> <20160605161310 dot 68954abc at vepi2> <CAGkQGi+z496egy-BsAhZnmG+agcOyAoXErf9bArZyP81jd-b7w at mail dot gmail dot com>
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.thomas@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 <vehre@gmx.de> wrote:
> > Hi Paul,
> >
> > now with attachment.
> >
> > - Andre
> >
> > On Sun, 5 Jun 2016 16:06:09 +0200
> > Paul Richard Thomas <paul.richard.thomas@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 <vehre@gmx.de> wrote:
> >> > Ping!
> >> >
> >> > On Sun, 22 May 2016 18:51:22 +0200
> >> > Andre Vehreschild <vehre@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_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
+
Index: gcc/testsuite/ChangeLog
===================================================================
--- gcc/testsuite/ChangeLog (Revision 237104)
+++ gcc/testsuite/ChangeLog (Arbeitskopie)
@@ -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.
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 <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
Index: gcc/fortran/ChangeLog
===================================================================
--- gcc/fortran/ChangeLog (Revision 237101)
+++ gcc/fortran/ChangeLog (Arbeitskopie)
@@ -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-01 Paul Thomas <pault@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 <vehre@gcc.gnu.org>
+
+ PR fortran/69659
+ * gfortran.dg/class_array_22.f03: New test.
+
2016-06-03 Bill Schmidt <wschmidt@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_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
+