view gcc/testsuite/gfortran.dg/func_assign_3.f90 @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 84e7813d76e9
children
line wrap: on
line source

! { dg-do run }
! Tests the fix for PR40646 in which the assignment would cause an ICE.
!
! Contributed by Charlie Sharpsteen  <chuck@sharpsteen.net>
! http://gcc.gnu.org/ml/fortran/2009-07/msg00010.html
! and reported by Tobias Burnus  <burnus@gcc,gnu.org>
!
module bugTestMod
  implicit none
  type:: boundTest
  contains
    procedure, nopass:: test => returnMat
  end type boundTest
contains
  function returnMat( a, b ) result( mat )
    integer:: a, b, i
    double precision, dimension(a,b):: mat
    mat = dble (reshape ([(i, i = 1, a * b)],[a,b])) 
    return
  end function returnMat
end module bugTestMod

program bugTest
  use bugTestMod
  implicit none
  integer i
  double precision, dimension(2,2):: testCatch
  type( boundTest ):: testObj
  testCatch = testObj%test(2,2)  ! This would cause an ICE
  if (any (testCatch .ne. dble (reshape ([(i, i = 1, 4)],[2,2])))) STOP 1
end program bugTest