Hi Mark,

OK for master. If you want to backport, that's fine by me but please give
it a few weeks.

Thanks for fixing this.

Paul


On Tue, 13 Oct 2020 at 08:17, Mark Eggleston <mark.eggles...@codethink.co.uk>
wrote:

> **ping**
>
> previously omitted commit message added
>
> On 29/09/2020 14:03, Mark Eggleston wrote:
> > For review.
> >
> > When the first attempt was committed the result was PR97224 i.e. it
> > broke the build of SPECCPU 2006 Games.
> >
> > I've changed the condition under which the error is produced. It was
> > produced in the local symbol was also found as a global symbol and the
> > the type of the symbol was not GSYM_UNKNOWN and not GSYM_COMMON.  This
> > meant that subroutine names in commons in the SPECCPU source code were
> > rejected.
> >
> > The condition no produces an error if the global symbol is either
> > GSYM_MODULE or GSYM_PROGRAM.
> >
> > The relevant section in the standard (19.3.1 (2)):
> >
> > "Within its scope, a local identifier of an entity of class (1) or
> > class (4) shall not be the same as a global identifier used in that
> > scope unless the global identifier
> >
> >  * is used only as the use-name of a rename in a USE statement,
> >  * is a common block name (19.3.2),
> >  * is an external procedure name that is also a generic name, or
> >  * is an external function name and the inclusive scope is its defining
> >    subprogram (19.3.3)."
> >
> > I've added two new test cases for subroutine and function.
> >
> > I'm not certain about the restriction that the external procedure
> > should be a generic name. I have found the earlier standards somewhat
> > confusing on the subject, so I haven't determined whether there should
> > be any standards dependent code.
> >
> [PATCH] Fortran  :  ICE in build_field PR95614
>
> Local identifiers can not be the same as a module name. Original
> patch by Steve Kargl resulted in name clashes between common block
> names and local identifiers.  A local identifier can be the same as
> a global identier if that identifier is not a module or a program.
> The original patch was modified to reject global identifiers that
> represent a module or a program.
>
> 2020-09-29  Steven G. Kargl  <ka...@gcc.gnu.org>
>          Mark Eggleston  <markeggles...@gcc.gnu.org>
>
> gcc/fortran/
>
>      PR fortran/95614
>      * decl.c (gfc_get_common): Use gfc_match_common_name instead
>      of match_common_name.
>      * decl.c (gfc_bind_idents): Use gfc_match_common_name instead
>      of match_common_name.
>      * match.c : Rename match_common_name to gfc_match_common_name.
>      * match.c (gfc_match_common): Use gfc_match_common_name instead
>      of match_common_name.
>      * match.h : Rename match_common_name to gfc_match_common_name.
>      * resolve.c (resolve_common_vars): Check each symbol in a
>      common block has a global symbol.  If there is a global symbol
>      issue an error if the symbol type is a module or a program.
>
> 2020-09-29  Mark Eggleston <markeggles...@gcc.gnu.org>
>
> gcc/testsuite/
>
>      PR fortran/95614
>      * gfortran.dg/pr95614_1.f90: New test.
>      * gfortran.dg/pr95614_2.f90: New test.
>      * gfortran.dg/pr95614_3.f90: New test.
>      * gfortran.dg/pr95614_4.f90: New test.
>
> --
> https://www.codethink.co.uk/privacy.html
>
>

-- 
"If you can't explain it simply, you don't understand it well enough" -
Albert Einstein

Reply via email to