re PR fortran/13372 (ICE in trans-types.c (gfc_typenode_for_spec), see #13201)

fortran/
PR fortran/13372
* module.c (write_symbol, write_symtree): Don't write symbols
wrongly added to namespace.
* trans-decl.c (gfc_create_module_variable): Don't create a
backend decl for a symbol incorrectly added to namespace.

testsuite/
PR fortran/13372
* gfortran.fortran-torture/compile/named_args_2.f90: New test.

From-SVN: r82834
This commit is contained in:
Tobias Schlüter 2004-06-09 14:55:50 +02:00
parent b40742a531
commit 62f1d4705d
5 changed files with 42 additions and 2 deletions

View File

@ -1,3 +1,11 @@
2004-06-09 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/13372
* module.c (write_symbol, write_symtree): Don't write symbols
wrongly added to namespace.
* trans-decl.c (gfc_create_module_variable): Don't create a
backend decl for a symbol incorrectly added to namespace.
2004-06-09 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/13201

View File

@ -3137,6 +3137,13 @@ write_symbol (int n, gfc_symbol * sym)
if (sym->attr.flavor == FL_UNKNOWN || sym->attr.flavor == FL_LABEL)
gfc_internal_error ("write_symbol(): bad module symbol '%s'", sym->name);
if (sym->attr.flavor == FL_VARIABLE && sym->ts.type == BT_UNKNOWN)
/* TODO: this is a workaround for some of the problems in PR15481,
and fixes the dependent bug PR13372. In an ideal frontend, this
should never happen. */
return;
mio_integer (&n);
mio_internal_string (sym->name);
@ -3260,6 +3267,12 @@ write_symtree (gfc_symtree * st)
&& !sym->attr.subroutine && !sym->attr.function))
return;
if (sym->attr.flavor == FL_VARIABLE && sym->ts.type == BT_UNKNOWN)
/* TODO: this is a workaround for some of the problems in PR15481,
and fixes the dependent bug PR13372. In an ideal frontend, this
should never happen. */
return;
if (check_unique_name (st->name))
return;

View File

@ -1788,6 +1788,12 @@ gfc_create_module_variable (gfc_symbol * sym)
&& (sym->attr.flavor != FL_PARAMETER || sym->attr.dimension == 0))
return;
if (sym->attr.flavor == FL_VARIABLE && sym->ts.type == BT_UNKNOWN)
/* TODO: This is a workaround for the issue outlined in PR 15481,
and it fixes the bug in PR13372. This should never happen in an
ideal frontend. */
return;
/* Don't generate variables from other modules. */
if (sym->attr.use_assoc)
return;

View File

@ -1,10 +1,15 @@
2004-06-09 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/13372
* gfortran.fortran-torture/compile/named_args_2.f90: New test.
2004-06-09 Bud Davis <bdavis9659@comcast.net>
PR gfortran/14897
* gfortran.fortran-torture/execute/t_edit.f90
* gfortran.fortran-torture/execute/t_edit.f90: New test.
2004-06-09 Bud Davis <bdavis9659@comcast.net>
PR gfortran/15755
* gfortran.fortran-torture/execute/backspace.c : New test.

View File

@ -0,0 +1,8 @@
! this is the reduced testcase from pr13372
! we wrongly add a symbol "P" to the module
! Currently (2004/06/09) a workaround is in place
! PR 15481 tracks any steps towards a real fix.
module typeSizes
implicit none
integer, parameter :: FourByteReal = selected_real_kind(P = 6, R = 37)
end module typeSizes