------- Comment #5 from janus at gcc dot gnu dot org  2010-06-18 23:54 -------
(In reply to comment #3)
> /export/gnu/import/svn/gcc-test/src-trunk/gcc/testsuite/gfortran.dg/typebound_proc_15.f03:15.23:
> 
>   procedure :: bar, baz  { dg-error "PROCEDURE list" }
>                        1
> Error: Fortran 2008: PROCEDURE list at (1)
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x40000000001d4681 in resolve_fl_derived (sym=0x60000000002cf0d0)
>     at ../../src-trunk/gcc/fortran/resolve.c:959
> 959       if (!a.implicit_type && sym->ts.type != BT_UNKNOWN)
> (gdb) bt
> #0  0x40000000001d4681 in resolve_fl_derived (sym=0x60000000002cf0d0)
>     at ../../src-trunk/gcc/fortran/resolve.c:959


Ok, actually I also get an ICE. But for some reason only when compiling by
hand, not in the testsuite.

It is fixed by this patch:


Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c       (revision 160948)
+++ gcc/fortran/resolve.c       (working copy)
@@ -10850,7 +10850,7 @@
                  c->ts.u.cl = cl;
                }
            }
-         else if (c->ts.interface->name[0] != '\0' && !sym->attr.vtype)
+         else if (!sym->attr.vtype && c->ts.interface->name[0] != '\0')
            {
              gfc_error ("Interface '%s' of procedure pointer component "
                         "'%s' at %L must be explicit", c->ts.interface->name,


Does this fix the issue for you?


-- 

janus at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
   Last reconfirmed|0000-00-00 00:00:00         |2010-06-18 23:54:28
               date|                            |


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

Reply via email to