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



--- Comment #9 from janus at gcc dot gnu.org 2012-10-14 11:15:25 UTC ---

Ok, after the ICEs are fixed, let's come to runtime behavior. Here is a test

case:



  implicit none

  type test_type

    integer :: i

  end type

  class(test_type), allocatable :: c

  type(test_type) :: t



  allocate(c)

  c%i=3

  t = transfer(c, t)

  print *,t



end





With ifort and sunf95 this gives the expected output of "3", while gfortran

just spits out random numbers. -fdump-tree-original shows the following:



{

  struct test_type transfer.0;

  integer(kind=8) D.1884;

  integer(kind=8) D.1883;

  integer(kind=8) D.1882;



  D.1882 = 16;

  D.1883 = 4;

  __builtin_memcpy ((void *) &transfer.0, (void *) &c, MAX_EXPR <MIN_EXPR

<D.1883, D.1882>, 0>);

  t = transfer.0;

}



Clearly, the "&c" here should be "&c._data".

Reply via email to