Message ID | 20240711160509.06263884@gmx.de |
---|---|
State | New |
Headers | show |
Series | [Fortran,PR84244,v1] Fix ICE in recompute_tree_invariant_for_addr_expr, at tree.c:4535 | expand |
Hi all, and the last ping. Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? Regards, Andre On Thu, 11 Jul 2024 16:05:09 +0200 Andre Vehreschild <vehre@gmx.de> wrote: > Hi all, > > the attached patch fixes a segfault in the compiler, where for pointer > components of a derived type the caf_token in the component was not > set, when the derived was previously used outside of a coarray. > > Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? > > Regards, > Andre -- Andre Vehreschild * Email: vehre ad gmx dot de
Ping! On Wed, 17 Jul 2024 15:11:33 +0200 Andre Vehreschild <vehre@gmx.de> wrote: > Hi all, > > and the last ping. > > Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? > > Regards, > Andre > > On Thu, 11 Jul 2024 16:05:09 +0200 > Andre Vehreschild <vehre@gmx.de> wrote: > > > Hi all, > > > > the attached patch fixes a segfault in the compiler, where for pointer > > components of a derived type the caf_token in the component was not > > set, when the derived was previously used outside of a coarray. > > > > Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? > > > > Regards, > > Andre > > > -- > Andre Vehreschild * Email: vehre ad gmx dot de -- Andre Vehreschild * Email: vehre ad gmx dot de
Hi all, any one for a review? This patch is over a month old and starts to rot. Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? - Andre On Fri, 9 Aug 2024 16:27:42 +0200 Andre Vehreschild <vehre@gmx.de> wrote: > Ping! > > On Wed, 17 Jul 2024 15:11:33 +0200 > Andre Vehreschild <vehre@gmx.de> wrote: > > > Hi all, > > > > and the last ping. > > > > Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? > > > > Regards, > > Andre > > > > On Thu, 11 Jul 2024 16:05:09 +0200 > > Andre Vehreschild <vehre@gmx.de> wrote: > > > > > Hi all, > > > > > > the attached patch fixes a segfault in the compiler, where for pointer > > > components of a derived type the caf_token in the component was not > > > set, when the derived was previously used outside of a coarray. > > > > > > Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? > > > > > > 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
Hi Andre, Am 16.08.24 um 12:05 schrieb Andre Vehreschild: > Hi all, > > any one for a review? This patch is over a month old and starts to rot. > > Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? this is good to go. Thanks for the patch! Harald > - Andre > > On Fri, 9 Aug 2024 16:27:42 +0200 > Andre Vehreschild <vehre@gmx.de> wrote: > >> Ping! >> >> On Wed, 17 Jul 2024 15:11:33 +0200 >> Andre Vehreschild <vehre@gmx.de> wrote: >> >>> Hi all, >>> >>> and the last ping. >>> >>> Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? >>> >>> Regards, >>> Andre >>> >>> On Thu, 11 Jul 2024 16:05:09 +0200 >>> Andre Vehreschild <vehre@gmx.de> wrote: >>> >>>> Hi all, >>>> >>>> the attached patch fixes a segfault in the compiler, where for pointer >>>> components of a derived type the caf_token in the component was not >>>> set, when the derived was previously used outside of a coarray. >>>> >>>> Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? >>>> >>>> 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
Hi Harald, thanks for the review. Committed as: gcc-15-3014-g661acde60ef Regards, Andre On Fri, 16 Aug 2024 19:20:58 +0200 Harald Anlauf <anlauf@gmx.de> wrote: > Hi Andre, > > Am 16.08.24 um 12:05 schrieb Andre Vehreschild: > > Hi all, > > > > any one for a review? This patch is over a month old and starts to rot. > > > > Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? > > this is good to go. > > Thanks for the patch! > > Harald > > > - Andre > > > > On Fri, 9 Aug 2024 16:27:42 +0200 > > Andre Vehreschild <vehre@gmx.de> wrote: > > > >> Ping! > >> > >> On Wed, 17 Jul 2024 15:11:33 +0200 > >> Andre Vehreschild <vehre@gmx.de> wrote: > >> > >>> Hi all, > >>> > >>> and the last ping. > >>> > >>> Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? > >>> > >>> Regards, > >>> Andre > >>> > >>> On Thu, 11 Jul 2024 16:05:09 +0200 > >>> Andre Vehreschild <vehre@gmx.de> wrote: > >>> > >>>> Hi all, > >>>> > >>>> the attached patch fixes a segfault in the compiler, where for pointer > >>>> components of a derived type the caf_token in the component was not > >>>> set, when the derived was previously used outside of a coarray. > >>>> > >>>> Regtests ok on x86_64-pc-linux-gnu / Fedora 39. Ok for mainline? > >>>> > >>>> 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 > -- Andre Vehreschild * Email: vehre ad gmx dot de
From 88f209316a980fbe78423d6aba747bb6b7fd404f Mon Sep 17 00:00:00 2001 From: Andre Vehreschild <vehre@gcc.gnu.org> Date: Thu, 11 Jul 2024 15:44:56 +0200 Subject: [PATCH] [Fortran] Fix ICE in recompute_tree_invariant_for_addr_expr, at tree.c:4535 [PR84244] Declaring an unused function with a derived type having a pointer component and using that derived type as a coarray, lead the compiler to ICE because the caf_token for the pointer was not linked into the component correctly. PR fortran/84244 gcc/fortran/ChangeLog: * trans-types.cc (gfc_get_derived_type): When a caf_sub_token is generated for a component, link it to the component it is generated for (the previous one). gcc/testsuite/ChangeLog: * gfortran.dg/coarray/ptr_comp_5.f08: New test. --- gcc/fortran/trans-types.cc | 6 +++++- .../gfortran.dg/coarray/ptr_comp_5.f08 | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/coarray/ptr_comp_5.f08 diff --git a/gcc/fortran/trans-types.cc b/gcc/fortran/trans-types.cc index c76cdca4eae..83c0708ccbd 100644 --- a/gcc/fortran/trans-types.cc +++ b/gcc/fortran/trans-types.cc @@ -2647,7 +2647,7 @@ gfc_get_derived_type (gfc_symbol * derived, int codimen) tree *chain = NULL; bool got_canonical = false; bool unlimited_entity = false; - gfc_component *c; + gfc_component *c, *last_c = nullptr; gfc_namespace *ns; tree tmp; bool coarray_flag, class_coarray_flag; @@ -2947,10 +2947,14 @@ gfc_get_derived_type (gfc_symbol * derived, int codimen) types. */ if (class_coarray_flag || !c->backend_decl) c->backend_decl = field; + if (c->attr.caf_token && last_c) + last_c->caf_token = field; if (c->attr.pointer && (c->attr.dimension || c->attr.codimension) && !(c->ts.type == BT_DERIVED && strcmp (c->name, "_data") == 0)) GFC_DECL_PTR_ARRAY_P (c->backend_decl) = 1; + + last_c = c; } /* Now lay out the derived type, including the fields. */ diff --git a/gcc/testsuite/gfortran.dg/coarray/ptr_comp_5.f08 b/gcc/testsuite/gfortran.dg/coarray/ptr_comp_5.f08 new file mode 100644 index 00000000000..ed3a8db13fa --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray/ptr_comp_5.f08 @@ -0,0 +1,19 @@ +! { dg-do compile } + +! Check PR84244 does not ICE anymore. + +program ptr_comp_5 + integer, target :: dest = 42 + type t + integer, pointer :: p + end type + type(t) :: o[*] + + o%p => dest +contains + ! This unused routine is crucial for the ICE. + function f(x) + type(t), intent(in) ::x + end function +end program + -- 2.45.2