------- Comment #4 from pault at gcc dot gnu dot org  2007-10-23 16:08 -------
(In reply to comment #3)
> (In reply to comment #2)

> I'll figure out how to fix it.

This does the job:

Index: gcc/fortran/trans-intrinsic.c
===================================================================
*** gcc/fortran/trans-intrinsic.c       (revision 129504)
--- gcc/fortran/trans-intrinsic.c       (working copy)
*************** gfc_conv_intrinsic_array_transfer (gfc_s
*** 3171,3178 ****
      {
        tmp = fold_build2 (MULT_EXPR, gfc_array_index_type,
                         tmp, dest_word_len);
-       tmp = fold_build2 (MIN_EXPR, gfc_array_index_type,
-                        tmp, source_bytes);
      }
    else
      tmp = source_bytes;
--- 3171,3176 ----
*************** gfc_conv_intrinsic_array_transfer (gfc_s
*** 3229,3235 ****
                         3,
                         tmp,
                         fold_convert (pvoid_type_node, source),
!                        size_bytes);
    gfc_add_expr_to_block (&se->pre, tmp);

    se->expr = info->descriptor;
--- 3227,3233 ----
                         3,
                         tmp,
                         fold_convert (pvoid_type_node, source),
!                        source_bytes);
    gfc_add_expr_to_block (&se->pre, tmp);

    se->expr = info->descriptor;

and survives "dg.exp=gfortran/transfer*".  It is going to be a while before I
can deal with this, so please feel free.  (I cannot svn commit from where I
am.)

Paul


-- 


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

Reply via email to