re PR fortran/13372 (ICE in trans-types.c (gfc_typenode_for_spec), see #13201)
authorTobias Schlüter <tobi@gcc.gnu.org>
Wed, 9 Jun 2004 12:55:50 +0000 (14:55 +0200)
committerTobias Schlüter <tobi@gcc.gnu.org>
Wed, 9 Jun 2004 12:55:50 +0000 (14:55 +0200)
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

gcc/fortran/ChangeLog
gcc/fortran/module.c
gcc/fortran/trans-decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.fortran-torture/compile/named_args_2.f90 [new file with mode: 0644]

index 9034b95..d8a6da4 100644 (file)
@@ -1,5 +1,13 @@
 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
        * resolve.c (resolve_symbol): Verify that parameter array has an
        explicit shape. Fix typos and coding style issues in surrounding
index 09f9452..eace654 100644 (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;
 
index 7bd912e..1420737 100644 (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;
index d726cf0..d60039b 100644 (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.
 
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/named_args_2.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/named_args_2.f90
new file mode 100644 (file)
index 0000000..c2d36eb
--- /dev/null
@@ -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