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

--- Comment #5 from Tobias Burnus <burnus at gcc dot gnu.org> 2011-04-30 
10:04:59 UTC ---
(In reply to comment #3)
> If one modifies the program (cf. attachment 24110 [details]) as follows,
> gfortran 4.7 segfaults

The reason is that in gfc_type_compatible, the ts1 and ts2 are both BT_CLASS,
with ts1->u.derived->name == point3d
and  ts2->u.derived->name == point2d

As point3d is derived from point2d, the first component is the parent type:
  ts1->u.derived->components->name == point2d
while point2d is not derived and thus the first component is the "real :: x"
component:
  ts2->u.derived->components->name == x

Thus, it is not surprising that accessing "x"'s ts.u.derived is NULL:
  ts2->u.derived->components->ts.u.derived

gfc_type_compatible is called via gfc_compare_types, which is called by
resolve.c's check_typebound_override

      if (!gfc_compare_types (&proc_target->result->ts,
                              &old_target->result->ts))

 * * *

> Regarding a second program at
> http://gcc.gnu.org/ml/fortran/2011-04/msg00302.html (see example 2 
> attachment):

Draft patch at: http://gcc.gnu.org/ml/fortran/2011-04/msg00318.html

Reply via email to