aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorTobias Schlüter <tobi@gcc.gnu.org>2005-03-19 20:45:45 +0100
committerTobias Schlüter <tobi@gcc.gnu.org>2005-03-19 20:45:45 +0100
commit9439ae414f662f6923a4067e0906b11baab5fa7c (patch)
tree8ce984e73898818d3c65ed4adee306261d23e5f4 /gcc/fortran
parent0de27aacb6dd0ee17f31b2019a21e75371e15a84 (diff)
downloadgcc-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/fortran')
-rw-r--r--gcc/fortran/ChangeLog8
-rw-r--r--gcc/fortran/dump-parse-tree.c2
-rw-r--r--gcc/fortran/resolve.c2
3 files changed, 11 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;