http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56500



--- Comment #5 from Dominique d'Humieres <dominiq at lps dot ens.fr> 2013-03-17 
19:46:16 UTC ---

> The patches of comment 2 and comment 3 regtest cleanly.



With the patches applied to a clean revision 196754 I have lot of errors in my

tests and at least one failure for the test suite:



[macbook] f90/bug% /opt/gcc/gcc4.9p-196754p1/bin/gfortran

/opt/gcc/work/gcc/testsuite/gfortran.dg/array_constructor_42.f90

/opt/gcc/work/gcc/testsuite/gfortran.dg/array_constructor_42.f90:13.21:



    intrinsic :: real

                     1

Error: Symbol 'real' at (1) has no IMPLICIT type

/opt/gcc/work/gcc/testsuite/gfortran.dg/array_constructor_42.f90:20.21:



    intrinsic :: real

                     1

Error: Symbol 'real' at (1) has no IMPLICIT type



The patch I have is



diff -up ../_clean/gcc/fortran/decl.c ../p_work/gcc/fortran/decl.c

--- ../_clean/gcc/fortran/decl.c    2013-02-02 11:15:07.000000000 +0100

+++ ../p_work/gcc/fortran/decl.c    2013-03-17 18:43:50.000000000 +0100

@@ -6293,6 +6293,13 @@ attr_decl1 (void)

     }

     }



+  if (sym->ts.type == BT_UNKNOWN

+      && gfc_set_default_type (sym, 1, NULL) == FAILURE)

+    {

+      m = MATCH_ERROR;

+      goto cleanup;

+    }

+

   /* Update symbol table.  DIMENSION attribute is set in

      gfc_set_array_spec().  For CLASS variables, this must be applied

      to the first component, or '_data' field.  */

diff -up ../_clean/gcc/fortran/resolve.c ../p_work/gcc/fortran/resolve.c

--- ../_clean/gcc/fortran/resolve.c    2013-03-10 14:25:57.000000000 +0100

+++ ../p_work/gcc/fortran/resolve.c    2013-03-17 18:43:50.000000000 +0100

@@ -318,7 +318,13 @@ resolve_formal_arglist (gfc_symbol *proc

     {

       if (sym->ts.type == BT_UNKNOWN && !proc->attr.intrinsic

           && (!sym->attr.function || sym->result == sym))

-        gfc_set_default_type (sym, 1, sym->ns);

+        {

+          gfc_set_default_type (sym, 1, sym->ns);

+          if (sym->ts.type == BT_CLASS

+          && gfc_build_class_symbol (&sym->ts, &sym->attr,

+                         &sym->as, false) == FAILURE)

+        continue;

+        }

     }



       as = sym->ts.type == BT_CLASS && sym->attr.class_ok



(the patch in comment #3 is rejected and I have applied it manually, may be I

made a mistake I cannot spot).

Reply via email to