diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2007-10-02 07:53:05 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2007-10-02 07:53:05 +0000 |
commit | a7ca4d8d3d7caa24e708267d8a6560eb6faf809a (patch) | |
tree | 351f992681af4a467247bdc3af7bd97396f7e3b9 /gcc/fortran | |
parent | e2d299684b33efc10cb3eeb773cb1780af0b5719 (diff) | |
download | gcc-a7ca4d8d3d7caa24e708267d8a6560eb6faf809a.zip gcc-a7ca4d8d3d7caa24e708267d8a6560eb6faf809a.tar.gz gcc-a7ca4d8d3d7caa24e708267d8a6560eb6faf809a.tar.bz2 |
re PR fortran/33550 (ICE (segfault) when USEing ambiguous symbols)
2007-10-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/33550
* decl.c (get_proc_name): Return rc if rc is non-zero; ie. if
the name is a reference to an ambiguous symbol.
2007-10-02 Paul Thomas <pault@gcc.gnu.org>
PR fortran/33550
* gfortran.dg/ambiguous_reference_1.f90: New test.
From-SVN: r128949
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/decl.c | 5 |
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d6ae6dc..f35b0dc 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 2007-10-02 Paul Thomas <pault@gcc.gnu.org> + PR fortran/33550 + * decl.c (get_proc_name): Return rc if rc is non-zero; ie. if + the name is a reference to an ambiguous symbol. + +2007-10-02 Paul Thomas <pault@gcc.gnu.org> + PR fortran/31154 PR fortran/31229 PR fortran/33334 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index e25389f..a507137 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -672,7 +672,7 @@ get_proc_name (const char *name, gfc_symbol **result, bool module_fcn_entry) { gfc_symtree *st; gfc_symbol *sym; - int rc; + int rc = 0; /* Module functions have to be left in their own namespace because they have potentially (almost certainly!) already been referenced. @@ -709,6 +709,9 @@ get_proc_name (const char *name, gfc_symbol **result, bool module_fcn_entry) else rc = gfc_get_symbol (name, gfc_current_ns->parent, result); + if (rc) + return rc; + sym = *result; gfc_current_ns->refs++; |