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



janus at gcc dot gnu.org changed:



           What    |Removed                     |Added

----------------------------------------------------------------------------

             Status|NEW                         |ASSIGNED

         AssignedTo|unassigned at gcc dot       |janus at gcc dot gnu.org

                   |gnu.org                     |



--- Comment #5 from janus at gcc dot gnu.org 2012-10-10 16:35:23 UTC ---

(In reply to comment #4) 

> 1) The ICE in comment 2, which happens with all gfortran versions from 4.5 to

> trunk.



The ICE can be fixed by the following patch:



Index: gcc/fortran/trans-intrinsic.c

===================================================================

--- gcc/fortran/trans-intrinsic.c    (revision 192159)

+++ gcc/fortran/trans-intrinsic.c    (working copy)

@@ -5732,8 +5732,6 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)

   gfc_init_se (&arg1se, NULL);

   gfc_init_se (&arg2se, NULL);

   arg1 = expr->value.function.actual;

-  if (arg1->expr->ts.type == BT_CLASS)

-    gfc_add_data_component (arg1->expr);

   arg2 = arg1->next;



   /* Check whether the expression is a scalar or not; we cannot use

@@ -5755,7 +5753,10 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr)

           && arg1->expr->symtree->n.sym->attr.dummy)

         arg1se.expr = build_fold_indirect_ref_loc (input_location,

                                arg1se.expr);

-      tmp2 = arg1se.expr;

+      if (arg1->expr->ts.type == BT_CLASS)

+          tmp2 = gfc_class_data_get (arg1se.expr);

+      else

+        tmp2 = arg1se.expr;

         }

       else

         {

Reply via email to