------- Comment #2 from janus at gcc dot gnu dot org 2010-08-26 19:55 ------- It turns out this bug is rather easy to fix. The problem was the we used the temporary needed for the TYPE IS clause also in the CLASS DEFAULT clause (where we need none). The following patch fixes it (haven't checked for regressions yet):
Index: gcc/fortran/match.c =================================================================== --- gcc/fortran/match.c (revision 163470) +++ gcc/fortran/match.c (working copy) @@ -4460,6 +4460,12 @@ select_type_set_tmp (gfc_typespec *ts) char name[GFC_MAX_SYMBOL_LEN]; gfc_symtree *tmp; + if (!ts) + { + select_type_stack->tmp = NULL; + return; + } + if (!gfc_type_is_extensible (ts->u.derived)) return; @@ -4702,6 +4708,7 @@ gfc_match_class_is (void) c->where = gfc_current_locus; c->ts.type = BT_UNKNOWN; new_st.ext.case_list = c; + select_type_set_tmp (NULL); return MATCH_YES; } -- janus at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |janus at gcc dot gnu dot org |dot org | Status|UNCONFIRMED |ASSIGNED Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2010-08-26 19:55:39 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45420