From ff604888532c10d72b45494670151be4fadfbd39 Mon Sep 17 00:00:00 2001 From: Paul Thomas Date: Tue, 2 Jan 2007 14:23:36 +0000 Subject: [PATCH] re PR fortran/20896 (ambiguous interface not detected) 2007-01-02 Paul Thomas 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 PR fortran/20896 * gfortran.dg/interface_10.f90: Remove. From-SVN: r120342 --- gcc/fortran/ChangeLog | 9 ++++++ gcc/fortran/gfortran.h | 1 - gcc/fortran/interface.c | 5 ---- gcc/fortran/resolve.c | 2 +- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/gfortran.dg/interface_10.f90 | 33 ---------------------- 6 files changed, 15 insertions(+), 40 deletions(-) delete mode 100644 gcc/testsuite/gfortran.dg/interface_10.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 866038f8dce..e8a3de5efe3 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2007-01-02 Paul Thomas + + 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 * ChangeLog: Copy to ... diff --git a/gcc/fortran/gfortran.h b/gcc/fortran/gfortran.h index b477439ff64..62862977eeb 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 04618e7924e..dd1ac694521 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 ba547f20c55..650a5a22c91 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 429382b4f12..81ac58cd08e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-01-02 Paul Thomas + + PR fortran/20896 + * gfortran.dg/interface_10.f90: Remove. + 2007-01-01 Roger Sayle * 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 4dab96a3aac..00000000000 --- 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 -! - 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 -