blob: 303b2b98220fb771d713fd43efa3a1390f3d8118 [file] [log] [blame]
! { dg-do run }
! PR fortran/108010 - ICE in reduce_unary, reduce_binary_aa
! Contributed by G.Steinmetz
program p
implicit none
print *, + [integer :: [real ::]]
print *, - [integer :: [real ::]]
print *, 1 + [integer :: [real ::]]
print *, 1 - [integer :: [real ::]]
print *, 2 * [integer :: [real ::]]
print *, - [real :: [real ::], 2]
print *, + [integer :: [real ::], 2]
print *, - [integer :: [real ::], 2]
print *, 1 + [integer :: [real ::], 2]
print *, 1 - [integer :: [real ::], 2]
print *, 2 * [integer :: [real ::], 2]
print *, [integer :: [real ::]] + [integer :: [real ::]]
print *, [integer :: [real ::]] - [integer :: [real ::]]
print *, [integer :: [real ::]] * [integer :: [real ::]]
print *, [integer :: [real ::], 2] + [real :: [real ::], 3]
print *, [integer :: [real ::], 2] - [real :: [real ::], 3]
print *, [integer :: [real ::], 2] * [real :: [real ::], 3]
! Validate type of resulting arrays
if (.not. is_int ([integer :: [real ::]] )) stop 1
if (.not. is_int ([integer :: [real ::]] + [integer :: [real ::]])) stop 2
if (.not. is_real([real :: [integer ::]] )) stop 3
if (.not. is_real([real :: [integer ::]] + [real :: [integer ::]])) stop 4
if (.not. is_real([real :: [integer ::]] + [integer :: [real ::]])) stop 5
if (.not. is_real([integer :: [real ::]] + [real :: [integer ::]])) stop 6
contains
logical function is_int (x)
class(*) :: x(:)
select type (x)
type is (integer)
is_int = .true.
class default
is_int = .false.
end select
end function is_int
logical function is_real (x)
class(*) :: x(:)
select type (x)
type is (real)
is_real = .true.
class default
is_real = .false.
end select
end function is_real
end