[Patch, fortran] PR79685 - [12/13/14/15 Regression] ICE on valid code in gfc_match_structure_constructor

Mikael Morin morin-mikael@orange.fr
Sun Jul 28 20:35:14 GMT 2024


Le 28/07/2024 à 11:24, Paul Richard Thomas a écrit :
> I have attached the updated and rather simpler patch.
> 
OK for master and backport.
Thanks for the patch.

> Thanks for the prod, Mikael!
> 
> Paul
> 
> Fortran: Fix ICE with structure constructor in data statement [PR79685]
> 
> 2024-07-28  Paul Thomas  <pault@gcc.gnu.org <mailto:pault@gcc.gnu.org>>
> 
> gcc/fortran
> PR fortran/79685
> * decl.cc (match_data_constant): Find the symtree instead of
> the symbol so the use renamed symbols are found. Pass this and
> the derived type to gfc_match_structure_constructor.
> * match.h: Update prototype of gfc_match_structure_contructor.
> * primary.cc (gfc_match_structure_constructor): Remove call to
> gfc_get_ha_sym_tree and use caller supplied symtree instead.
> 
> gcc/testsuite/
> PR fortran/79685
> * gfortran.dg/use_rename_12.f90: New test.
> 
> 
> On Sat, 27 Jul 2024 at 22:04, Paul Richard Thomas 
> <paul.richard.thomas@gmail.com <mailto:paul.richard.thomas@gmail.com>> 
> wrote:
> 
>     Hi Mikael,
> 
>     You were absolutely right. I looked at the caller and "just didn't
>     get it". Thanks. I will resubmit when I get back from a business trip.
> 
>     Cordialement
> 
>     Paul
> 
> 
> 
>     On Sat, 27 Jul 2024 at 12:35, Mikael Morin <morin-mikael@orange.fr
>     <mailto:morin-mikael@orange.fr>> wrote:
> 
>         Hello,
> 
>         Le 27/07/2024 à 11:25, Paul Richard Thomas a écrit :
>          > This patch is straightforward but I am still puzzled as to
>         why it is
>          > necessary for the particular case. Having looked at all the
>         other chunks
>          > of frontend code involving use renaming, it seems that the
>         process just
>          > works everywhere else. I tried putting the new code in
>         gfc_find_symtree
>          > but it caused some regressions unless I pinned it down to the
>         specific
>          > case of a structure constructor.
>          >
>         I think it works as expected, symtrees have the local names, and
>         symbols
>         the original name, so if all that is available is the symbol, name
>         lookup may not work correctly with renaming.  And I think that
>         there are
>         other places where it happens.
> 
>         In this case, it seems the caller can provide the local name, which
>         would avoid processing the use statements.  Did you try that?
> 
>         Mikael
> 



More information about the Gcc-patches mailing list