aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2007-10-02 07:53:05 +0000
committerPaul Thomas <pault@gcc.gnu.org>2007-10-02 07:53:05 +0000
commita7ca4d8d3d7caa24e708267d8a6560eb6faf809a (patch)
tree351f992681af4a467247bdc3af7bd97396f7e3b9 /gcc/fortran
parente2d299684b33efc10cb3eeb773cb1780af0b5719 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/fortran/decl.c5
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++;