aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran/module.c
diff options
context:
space:
mode:
authorTobias Schlüter <tobi@gcc.gnu.org>2004-06-09 14:55:50 +0200
committerTobias Schlüter <tobi@gcc.gnu.org>2004-06-09 14:55:50 +0200
commit62f1d4705d0b042e13faad97ea12b665b4f3ad84 (patch)
treec1de926e45c095751fbacdbbeac74a56885562fc /gcc/fortran/module.c
parentb40742a53183a904e4902b1fcad54b7b2c6cf57d (diff)
downloadgcc-62f1d4705d0b042e13faad97ea12b665b4f3ad84.zip
gcc-62f1d4705d0b042e13faad97ea12b665b4f3ad84.tar.gz
gcc-62f1d4705d0b042e13faad97ea12b665b4f3ad84.tar.bz2
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
Diffstat (limited to 'gcc/fortran/module.c')
-rw-r--r--gcc/fortran/module.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/fortran/module.c b/gcc/fortran/module.c
index 09f9452..eace654 100644
--- a/gcc/fortran/module.c
+++ b/gcc/fortran/module.c
@@ -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;