http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54435
--- Comment #5 from janus at gcc dot gnu.org 2012-08-31 14:03:21 UTC --- This kills the ICE and gets us back at least to the 4.6 behavior (see comment #3): Index: gcc/fortran/match.c =================================================================== --- gcc/fortran/match.c (revision 190419) +++ gcc/fortran/match.c (working copy) @@ -5367,10 +5367,10 @@ gfc_match_select_type (void) array, which can have a reference, from other expressions that have references, such as derived type components, and are not allowed by the standard. - TODO; see is it is sufficient to exclude component and substring + TODO: see if it is sufficient to exclude component and substring references. */ class_array = expr1->expr_type == EXPR_VARIABLE - && expr1->ts.type != BT_UNKNOWN + && expr1->ts.type == BT_CLASS && CLASS_DATA (expr1) && (strcmp (CLASS_DATA (expr1)->name, "_data") == 0) && (CLASS_DATA (expr1)->attr.dimension