Commit 6f9c9d6d by Tobias Burnus Committed by Tobias Burnus

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
parent b77ba909
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> 2009-03-31 Joseph Myers <joseph@codesourcery.com>
PR preprocessor/15638 PR preprocessor/15638
......
...@@ -1401,6 +1401,13 @@ match_actual_arg (gfc_expr **result) ...@@ -1401,6 +1401,13 @@ match_actual_arg (gfc_expr **result)
&& sym->attr.flavor != FL_UNKNOWN) && sym->attr.flavor != FL_UNKNOWN)
break; 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 /* If the symbol is a function with itself as the result and
is being defined, then we have a variable. */ is being defined, then we have a variable. */
if (sym->attr.function && sym->result == sym) if (sym->attr.function && sym->result == sym)
......
...@@ -719,6 +719,9 @@ resolve_common_vars (gfc_symbol *sym, bool named_common) ...@@ -719,6 +719,9 @@ resolve_common_vars (gfc_symbol *sym, bool named_common)
gfc_error_now ("Derived type variable '%s' in COMMON at %L " gfc_error_now ("Derived type variable '%s' in COMMON at %L "
"may not have default initializer", csym->name, "may not have default initializer", csym->name,
&csym->declared_at); &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);
} }
} }
......
2009-04-03 Tobias Burnus <burnus@net-b.de>
PR fortran/39594
* gfortran.dg/common_12.f90: New.
2009-04-03 Jason Merrill <jason@redhat.com> 2009-04-03 Jason Merrill <jason@redhat.com>
PR c++/39608 PR c++/39608
......
! { dg-do compile }
!
! PR fortran/39594
!
! Contributed by Peter Knowles and reduced by Jakub Jelinek.
!
module pr39594
implicit double precision(z)
common /z/ z0,z1,z2,z3,z4,z5,z6,z7
contains
subroutine foo
implicit double precision(z)
common /z/ z0,z1,z2,z3,z4,z5,z6,z7
call bar(z0)
end subroutine foo
end module
! { dg-final { cleanup-modules "pr39594" } }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment