aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/resolve.c
diff options
context:
space:
mode:
authorTobias Burnus <burnus@gcc.gnu.org>2012-04-11 15:08:32 +0200
committerTobias Burnus <burnus@gcc.gnu.org>2012-04-11 15:08:32 +0200
commit60fa39313ecb5f48392bf092c34b1a6a7a64f587 (patch)
treee2321a8cbf2af07bdd89c5a50d411a2e5266026a /gcc/fortran/resolve.c
parent84e60183679b852992c536ef73b11df600ab3cbb (diff)
downloadgcc-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.c10
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)