Fortran : ICE in build_field PR95614
authorMark Eggleston <markeggleston@gcc.gnu.org>
Thu, 11 Jun 2020 13:33:51 +0000 (14:33 +0100)
committerMark Eggleston <markeggleston@gcc.gnu.org>
Wed, 14 Oct 2020 10:08:09 +0000 (11:08 +0100)
commit4d2a56a0f7135469587feacef44cf00e08f71d09
tree263a94b0f2e2c30cacd701b05cbd7e11bf9ebf69
parentc7b6a7587f215e913cec9ed523bf32bb0405fd3f
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-10-14  Steven G. Kargl  <kargl@gcc.gnu.org>
    Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/fortran/ChangeLog:

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-10-14  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/ChangeLog:

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.
gcc/fortran/decl.c
gcc/fortran/match.c
gcc/fortran/match.h
gcc/fortran/resolve.c
gcc/testsuite/gfortran.dg/pr95614_1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/pr95614_2.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/pr95614_3.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/pr95614_4.f90 [new file with mode: 0644]