Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/gfortran.dg/elemental_subroutine_1.f90 @ 152:2b5abeee2509
update gcc11
author | anatofuz |
---|---|
date | Mon, 25 May 2020 07:50:57 +0900 |
parents | 84e7813d76e9 |
children |
line wrap: on
line source
! { dg-do run } ! Test the fix for pr22146, where and elemental subroutine with ! array actual arguments would cause an ICE in gfc_conv_function_call. ! The module is the original test case and the rest is a basic ! functional test of the scalarization of the function call. ! ! Contributed by Erik Edelmann <erik.edelmann@iki.fi> ! and Paul Thomas <pault@gcc.gnu.org> module pr22146 contains elemental subroutine foo(a) integer, intent(out) :: a a = 0 end subroutine foo subroutine bar() integer :: a(10) call foo(a) end subroutine bar end module pr22146 use pr22146 real, dimension (2) :: x, y real :: u, v x = (/1.0, 2.0/) u = 42.0 call bar () ! Check the various combinations of scalar and array. call foobar (x, y) if (any(y.ne.-x)) STOP 1 call foobar (u, y) if (any(y.ne.-42.0)) STOP 2 call foobar (u, v) if (v.ne.-42.0) STOP 3 v = 2.0 call foobar (v, x) if (any(x /= -2.0)) STOP 4 ! Test an expression in the INTENT(IN) argument x = (/1.0, 2.0/) call foobar (cos (x) + u, y) if (any(abs (y + cos (x) + u) .gt. 4.0e-6)) STOP 5 contains elemental subroutine foobar (a, b) real, intent(IN) :: a real, intent(out) :: b b = -a end subroutine foobar end