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>
Sun, 27 Sep 2020 10:47:08 +0000 (11:47 +0100)
commite5a76af3a2f3324efc60b4b2778ffb29d5c377bc
tree104cd071fef2bd61a93e0dea5ba6272499929d13
parent683e55facfd5c1d348796119424d7b3f9e889ffe
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 represents a common.  The patch
was modified to allow global identifiers that represent a common
block.

2020-09-27  Steven G. Kargl  <kargl@gcc.gnu.org>
    Mark Eggleston  <markeggleston@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 known as is not a common
block name.

2020-09-27  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/

PR fortran/95614
* gfortran.dg/pr95614_1.f90: New test.
* gfortran.dg/pr95614_2.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]