From: tobi Date: Sat, 19 Mar 2005 19:45:45 +0000 (+0000) Subject: fortran/ X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=644564ff83e60efd827cd94d278b3a383d9c0c68;p=thirdparty%2Fgcc.git fortran/ * dump-parse-tree.c (gfc_show_expr): Dump name of namespace in which the variable is declared. PR fortran/18525 * resolve.c (was_declared): Also check for dummy attribute. testsuite/ PR fortran/18525 * gfortran.dg/nesting_1.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96739 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0adec316a712..762b393296eb 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2005-03-18 Tobias Schl"uter + + * dump-parse-tree.c (gfc_show_expr): Dump name of namespace + in which the variable is declared. + + PR fortran/18525 + * resolve.c (was_declared): Also check for dummy attribute. + 2005-03-18 Tobias Schl"uter * gfortran.h (arith): Remove ARITH_0TO0. diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c index f8df9dabb124..3df244cca71e 100644 --- a/gcc/fortran/dump-parse-tree.c +++ b/gcc/fortran/dump-parse-tree.c @@ -409,6 +409,8 @@ gfc_show_expr (gfc_expr * p) break; case EXPR_VARIABLE: + if (p->symtree->n.sym->ns && p->symtree->n.sym->ns->proc_name) + gfc_status ("%s:", p->symtree->n.sym->ns->proc_name->name); gfc_status ("%s", p->symtree->n.sym->name); gfc_show_ref (p->ref); break; diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 730f4fb1fed3..16db94342d10 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -481,7 +481,7 @@ was_declared (gfc_symbol * sym) if (!a.implicit_type && sym->ts.type != BT_UNKNOWN) return 1; - if (a.allocatable || a.dimension || a.external || a.intrinsic + if (a.allocatable || a.dimension || a.dummy || a.external || a.intrinsic || a.optional || a.pointer || a.save || a.target || a.access != ACCESS_UNKNOWN || a.intent != INTENT_UNKNOWN) return 1; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4d8392038ea8..6af630a730d1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-03-19 Tobias Schlueter + + PR fortran/18525 + * gfortran.dg/nesting_1.f90: New test. + 2005-03-19 Kriang Lerdsuwanakij PR c++/20240 diff --git a/gcc/testsuite/gfortran.dg/nesting_1.f90 b/gcc/testsuite/gfortran.dg/nesting_1.f90 new file mode 100644 index 000000000000..51ebfd999a8b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/nesting_1.f90 @@ -0,0 +1,18 @@ +! PR 18525 +! we used to incorrectly refer to n from a when resolving the call to +! c from b +! { dg-do run } +subroutine a(n) +call b(n+1) +contains + subroutine b(n) + call c(n) + end subroutine b + + subroutine c(m) + if (m/=1) call abort + end subroutine c +end subroutine a + +call a(0) +end