aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gfortran.dg/func_assign_3.f90
blob: db81adf8ec0445c7c7ba0f990f40a3a4c3e19e3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
! { 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])))) call abort
end program bugTest