aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2007-01-02 14:23:36 +0000
committerPaul Thomas <pault@gcc.gnu.org>2007-01-02 14:23:36 +0000
commitff604888532c10d72b45494670151be4fadfbd39 (patch)
treeeaac45937e8ca8639bf0332ca79d422ef8b927ed
parent06d40de8bb03594e0f0eb7d0636f8ca84ce7d86d (diff)
downloadgcc-ff604888532c10d72b45494670151be4fadfbd39.zip
gcc-ff604888532c10d72b45494670151be4fadfbd39.tar.gz
gcc-ff604888532c10d72b45494670151be4fadfbd39.tar.bz2
re PR fortran/20896 (ambiguous interface not detected)
2007-01-02 Paul Thomas <pault@gcc.gnu.org> PR fortran/20896 * interface.c (check_sym_interfaces): Remove call to resolve_global_procedure. gfortran.h : Remove prototype for resolve_global_procedure. resolve.c (resolve_global_procedure): Add static attribute to function declaration. 2007-01-02 Paul Thomas <pault@gcc.gnu.org> PR fortran/20896 * gfortran.dg/interface_10.f90: Remove. From-SVN: r120342
-rw-r--r--gcc/fortran/ChangeLog9
-rw-r--r--gcc/fortran/gfortran.h1
-rw-r--r--gcc/fortran/interface.c5
-rw-r--r--gcc/fortran/resolve.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/interface_10.f9033
6 files changed, 15 insertions, 40 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 866038f..e8a3de5 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,12 @@
+2007-01-02 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/20896
+ * interface.c (check_sym_interfaces): Remove call to
+ resolve_global_procedure.
+ gfortran.h : Remove prototype for resolve_global_procedure.
+ resolve.c (resolve_global_procedure): Add static attribute
+ to function declaration.
+
2007-01-01 Steven G. Kargl <kargls@comcast.net>
* ChangeLog: Copy to ...
diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h
index b477439..6286297 100644
--- a/gcc/fortran/gfortran.h
+++ b/gcc/fortran/gfortran.h
@@ -2032,7 +2032,6 @@ void gfc_free_statement (gfc_code *);
void gfc_free_statements (gfc_code *);
/* resolve.c */
-void resolve_global_procedure (gfc_symbol *, locus *, int);
try gfc_resolve_expr (gfc_expr *);
void gfc_resolve (gfc_namespace *);
void gfc_resolve_blocks (gfc_code *, gfc_namespace *);
diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c
index 04618e7..dd1ac69 100644
--- a/gcc/fortran/interface.c
+++ b/gcc/fortran/interface.c
@@ -1016,11 +1016,6 @@ check_sym_interfaces (gfc_symbol * sym)
if (sym->ns != gfc_current_ns)
return;
- if (sym->attr.if_source == IFSRC_IFBODY
- && sym->attr.flavor == FL_PROCEDURE
- && !sym->attr.mod_proc)
- resolve_global_procedure (sym, &sym->declared_at, sym->attr.subroutine);
-
if (sym->generic != NULL)
{
sprintf (interface_name, "generic interface '%s'", sym->name);
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index ba547f2..650a5a2 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -1235,7 +1235,7 @@ find_noncopying_intrinsics (gfc_symbol * fnsym, gfc_actual_arglist * actual)
reference. The corresponding code that is called in creating
global entities is parse.c. */
-void
+static void
resolve_global_procedure (gfc_symbol *sym, locus *where, int sub)
{
gfc_gsymbol * gsym;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 429382b..81ac58c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-01-02 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/20896
+ * gfortran.dg/interface_10.f90: Remove.
+
2007-01-01 Roger Sayle <roger@eyesopen.com>
* gcc.dg/fold-eqxor-4.c: New test case.
diff --git a/gcc/testsuite/gfortran.dg/interface_10.f90 b/gcc/testsuite/gfortran.dg/interface_10.f90
deleted file mode 100644
index 4dab96a..0000000
--- a/gcc/testsuite/gfortran.dg/interface_10.f90
+++ /dev/null
@@ -1,33 +0,0 @@
-! { dg-do compile }
-! Test the fix for PR20896 in which the ambiguous use
-! of p was not detected.
-!
-! Contributed by Joost VandeVondele <jv244@cam.ac.uk>
-!
- INTERFACE g
- SUBROUTINE s1(p) ! { dg-error "is already being used" }
- INTERFACE
- SUBROUTINE p
- END
- END INTERFACE
- END
- SUBROUTINE s2(p) ! { dg-error "Global name" }
- INTERFACE
- REAL FUNCTION p()
- END
- END INTERFACE
- END
- END INTERFACE
-
- INTERFACE
- REAL FUNCTION x()
- END
- END INTERFACE
- INTERFACE
- SUBROUTINE y
- END
- END INTERFACE
- call g (x)
- call g (y)
- END
-