From: Paul Thomas Date: Tue, 2 Jan 2007 14:23:36 +0000 (+0000) Subject: re PR fortran/20896 (ambiguous interface not detected) X-Git-Tag: releases/gcc-4.3.0~7758 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ff604888532c10d72b45494670151be4fadfbd39;p=thirdparty%2Fgcc.git 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 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 866038f8dce4..e8a3de5efe3b 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 b477439ff64f..62862977eeb1 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 04618e7924ea..dd1ac694521b 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 ba547f20c55e..650a5a22c917 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 429382b4f12a..81ac58cd08e1 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 4dab96a3aace..000000000000 --- 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 -