http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54881
--- Comment #6 from janus at gcc dot gnu.org 2012-10-10 17:31:45 UTC ---
(In reply to comment #4)
> 2) The error message in comment 3, which only happens with trunk (and
> therefore
> is a regression).
This can be fixed by the following:
Index: gcc/fortran/match.c
===================================================================
--- gcc/fortran/match.c (revision 192159)
+++ gcc/fortran/match.c (working copy)
@@ -5257,12 +5257,14 @@ select_class_set_tmp (gfc_typespec *ts)
gfc_get_sym_tree (name, gfc_current_ns, &tmp, false);
gfc_add_type (tmp->n.sym, ts, NULL);
-/* Copy across the array spec to the selector. */
+ tmp->n.sym->attr.pointer
+ = CLASS_DATA (select_type_stack->selector)->attr.class_pointer;
+
+ /* Copy across the array spec to the selector. */
if (select_type_stack->selector->ts.type == BT_CLASS
&& (CLASS_DATA (select_type_stack->selector)->attr.dimension
|| CLASS_DATA (select_type_stack->selector)->attr.codimension))
{
- tmp->n.sym->attr.pointer = 1;
tmp->n.sym->attr.dimension
= CLASS_DATA (select_type_stack->selector)->attr.dimension;
tmp->n.sym->attr.codimension
However, I really wonder what caused this regression. On a quick glance, the
only patch concerning SELECT TYPE on trunk was the commit for PR41600. And I
don't directly see how this would cause the regression.