diff options
author | Tobias Burnus <burnus@net-b.de> | 2009-04-03 20:26:44 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2009-04-03 20:26:44 +0200 |
commit | 6f9c9d6d47751e980f0ca831f02e91c0ac424916 (patch) | |
tree | 451145da8c0a68c2c7cd489efba1be949fab4f36 /gcc/fortran | |
parent | b77ba909af773561e808c3d7cf64c46a8112dcab (diff) | |
download | gcc-6f9c9d6d47751e980f0ca831f02e91c0ac424916.zip gcc-6f9c9d6d47751e980f0ca831f02e91c0ac424916.tar.gz gcc-6f9c9d6d47751e980f0ca831f02e91c0ac424916.tar.bz2 |
re PR fortran/39594 (compiler falls over in gfc_get_symbol_decl)
2009-04-03 Tobias Burnus <burnus@net-b.de>
PR fortran/39594
* resolve.c (resolve_common_vars): Add FL_VARIABLE to symbol
if it is not a procedure pointer.
* primary.c (match_actual_arg): Ditto.
2009-04-03 Tobias Burnus <burnus@net-b.de>
PR fortran/39594
* gfortran.dg/common_12.f90: New.
From-SVN: r145513
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/primary.c | 7 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 3 |
3 files changed, 17 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0b9bc88..f629bf2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2009-04-03 Tobias Burnus <burnus@net-b.de> + + PR fortran/39594 + * resolve.c (resolve_common_vars): Add FL_VARIABLE to symbol + if it is not a procedure pointer. + * primary.c (match_actual_arg): Ditto. + 2009-03-31 Joseph Myers <joseph@codesourcery.com> PR preprocessor/15638 diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index c7ca861..cb6f988 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -1401,6 +1401,13 @@ match_actual_arg (gfc_expr **result) && sym->attr.flavor != FL_UNKNOWN) break; + if (sym->attr.in_common && !sym->attr.proc_pointer) + { + gfc_add_flavor (&sym->attr, FL_VARIABLE, sym->name, + &sym->declared_at); + break; + } + /* If the symbol is a function with itself as the result and is being defined, then we have a variable. */ if (sym->attr.function && sym->result == sym) diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 1fa1a79..32b13e4 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -719,6 +719,9 @@ resolve_common_vars (gfc_symbol *sym, bool named_common) gfc_error_now ("Derived type variable '%s' in COMMON at %L " "may not have default initializer", csym->name, &csym->declared_at); + + if (csym->attr.flavor == FL_UNKNOWN && !csym->attr.proc_pointer) + gfc_add_flavor (&csym->attr, FL_VARIABLE, csym->name, &csym->declared_at); } } |