diff options
author | Tobias Schlüter <tobi@gcc.gnu.org> | 2005-03-19 20:45:45 +0100 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2005-03-19 20:45:45 +0100 |
commit | 9439ae414f662f6923a4067e0906b11baab5fa7c (patch) | |
tree | 8ce984e73898818d3c65ed4adee306261d23e5f4 /gcc | |
parent | 0de27aacb6dd0ee17f31b2019a21e75371e15a84 (diff) | |
download | gcc-9439ae414f662f6923a4067e0906b11baab5fa7c.zip gcc-9439ae414f662f6923a4067e0906b11baab5fa7c.tar.gz gcc-9439ae414f662f6923a4067e0906b11baab5fa7c.tar.bz2 |
re PR fortran/18525 (ICE on valid code in gfc_get_symbol_decl())
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.
From-SVN: r96739
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/dump-parse-tree.c | 2 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/nesting_1.f90 | 18 |
5 files changed, 34 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0adec31..762b393 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,13 @@ 2005-03-18 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de> + * 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 <tobias.schlueter@physik.uni-muenchen.de> + * gfortran.h (arith): Remove ARITH_0TO0. * arith.c (gfc_arith_error): Remove handling of ARITH_0TO0. (gfc_arith_power): Remove special casing of zero to integral diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c index f8df9da..3df244c 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 730f4fb..16db943 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 4d83920..6af630a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-03-19 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/18525 + * gfortran.dg/nesting_1.f90: New test. + 2005-03-19 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> 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 0000000..51ebfd9 --- /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 |