blob: 4e9fe59ceab7a7d095d341dc54ae18eb7fc6433b [file] [log] [blame]
! { dg-do run }
! { dg-additional-options "-fdump-tree-original -O" }
! Check that absent and present dummy arguments work with
! packing when handing them down to an old-fashioned argument.
module x
implicit none
contains
subroutine foo (a,b)
real, dimension(:), intent(inout), optional :: a, b
if (present(a)) stop 1
if (.not. present(b)) stop 2
call bar (a, b)
end subroutine foo
subroutine bar (a,b)
real, dimension(2), intent(inout), optional :: a, b
real :: tmp
if (present(a)) stop 3
if (.not. present(b)) stop 4
tmp = b(2)
b(2) = b(1)
b(1) = tmp
end subroutine bar
end module x
program main
use x
implicit none
real, dimension(2) :: b
b(1) = 1.
b(2) = 42.
call foo(b=b)
if (b(1) /= 42. .or. b(2) /= 1.) stop 5
end program main
! { dg-final { scan-tree-dump-not "_gfortran_internal_unpack" "original" } }