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



--- Comment #8 from janus at gcc dot gnu.org 2012-10-13 21:52:39 UTC ---

The following fixes the ICE(s) on comment 5 ...





Index: gcc/fortran/target-memory.c

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

--- gcc/fortran/target-memory.c    (revision 192392)

+++ gcc/fortran/target-memory.c    (working copy)

@@ -121,6 +121,7 @@ gfc_target_expr_size (gfc_expr *e)

     case BT_HOLLERITH:

       return e->representation.length;

     case BT_DERIVED:

+    case BT_CLASS:

       {

     /* Determine type size without clobbering the typespec for ISO C

        binding types.  */

@@ -572,6 +573,9 @@ gfc_target_interpret_expr (unsigned char *buffer,

         gfc_interpret_character (buffer, buffer_size, result);

       break;



+    case BT_CLASS:

+      result->ts = result->ts.u.derived->components->ts;

+      /* Fall through.  */

     case BT_DERIVED:

       result->representation.length = 

         gfc_interpret_derived (buffer, buffer_size, result);





... which is then rejected with:



  copy = transfer(1,arg)

  1

Error: Variable must not be polymorphic in intrinsic assignment at (1) - check

that there is a matching specific subroutine for '=' operator





Intrinsic assignment to polymorphic variables is an F08 feature, which is not

yet implemented in gfortran, cf. PR 43366.

Reply via email to