diff options
author | Tobias Burnus <burnus@gcc.gnu.org> | 2012-04-11 15:08:32 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2012-04-11 15:08:32 +0200 |
commit | 60fa39313ecb5f48392bf092c34b1a6a7a64f587 (patch) | |
tree | e2321a8cbf2af07bdd89c5a50d411a2e5266026a /gcc/fortran/resolve.c | |
parent | 84e60183679b852992c536ef73b11df600ab3cbb (diff) | |
download | gcc-60fa39313ecb5f48392bf092c34b1a6a7a64f587.zip gcc-60fa39313ecb5f48392bf092c34b1a6a7a64f587.tar.gz gcc-60fa39313ecb5f48392bf092c34b1a6a7a64f587.tar.bz2 |
re PR fortran/52729 (Symbol has no implicit type in SELECT TYPE block)
2012-04-11 Tobias Burnus <burnus@net-b.de>
PR fortran/52729
* resolve.c (resolve_symbol): Fix searching for parent NS decl.
2012-04-11 Tobias Burnus <burnus@net-b.de>
PR fortran/52729
* gfortran.dg/block_11.f90: New.
From-SVN: r186318
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index b63a0c6..34b3e9e 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -12246,7 +12246,10 @@ resolve_symbol (gfc_symbol *sym) symbol_attribute class_attr; gfc_array_spec *as; - if (sym->attr.flavor == FL_UNKNOWN) + if (sym->attr.flavor == FL_UNKNOWN + || (sym->attr.flavor == FL_PROCEDURE && !sym->attr.intrinsic + && !sym->attr.generic && !sym->attr.external + && sym->attr.if_source == IFSRC_UNKNOWN)) { /* If we find that a flavorless symbol is an interface in one of the @@ -12270,9 +12273,10 @@ resolve_symbol (gfc_symbol *sym) /* Otherwise give it a flavor according to such attributes as it has. */ - if (sym->attr.external == 0 && sym->attr.intrinsic == 0) + if (sym->attr.flavor == FL_UNKNOWN && sym->attr.external == 0 + && sym->attr.intrinsic == 0) sym->attr.flavor = FL_VARIABLE; - else + else if (sym->attr.flavor == FL_UNKNOWN) { sym->attr.flavor = FL_PROCEDURE; if (sym->attr.dimension) |