https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68196

Dominique d'Humieres <dominiq at lps dot ens.fr> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-11-03
                 CC|                            |mikael at gcc dot gnu.org
            Summary|[6.0.0] ICE on function     |[4.9/5/6 Regression] ICE on
                   |result with procedure       |function result with
                   |pointer component           |procedure pointer component
     Ever confirmed|0                           |1

--- Comment #1 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
The ICE appeared between revisions r207428 (2014-02-03, compiles) and r207996
(2014-02-21, ICE). AFAICT this is due to an infinite loop in the recursive call
to has_finalizer_component

static bool
has_finalizer_component (gfc_symbol *derived)
{
   gfc_component *c;

  for (c = derived->components; c; c = c->next)
    {
      if (c->ts.type == BT_DERIVED && c->ts.u.derived->f2k_derived
          && c->ts.u.derived->f2k_derived->finalizers)
        return true;

      if (c->ts.type == BT_DERIVED
          && !c->attr.pointer && !c->attr.allocatable
          && has_finalizer_component (c->ts.u.derived))
        return true;
    }
  return false;
}

Reply via email to