⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 actual_array_result_1.f90

📁 用于进行gcc测试
💻 F90
字号:
! { dg-do run }! PR fortan/31692! Passing array valued results to procedures!! Test case contributed by rakuen_himawari@yahoo.co.jpmodule one  integer :: flag = 0contains  function foo1 (n)    integer :: n    integer :: foo1(n)    if (flag == 0) then      call bar1 (n, foo1)    else      call bar2 (n, foo1)    end if  end function  function foo2 (n)    implicit none    integer :: n    integer,ALLOCATABLE :: foo2(:)    allocate (foo2(n))    if (flag == 0) then      call bar1 (n, foo2)    else      call bar2 (n, foo2)    end if  end function  function foo3 (n)    implicit none    integer :: n    integer,ALLOCATABLE :: foo3(:)    allocate (foo3(n))    foo3 = 0    call bar2(n, foo3(2:(n-1)))  ! Check that sections are OK  end function  subroutine bar1 (n, array)     ! Checks assumed size formal arg.    integer :: n    integer :: array(*)    integer :: i    do i = 1, n      array(i) = i    enddo  end subroutine  subroutine bar2(n, array)     ! Checks assumed shape formal arg.    integer :: n    integer :: array(:)    integer :: i    do i = 1, size (array, 1)      array(i) = i    enddo   end subroutineend moduleprogram main  use one  integer :: n  n = 3  if(any (foo1(n) /= [ 1,2,3 ])) call abort()  if(any (foo2(n) /= [ 1,2,3 ])) call abort()  flag = 1  if(any (foo1(n) /= [ 1,2,3 ])) call abort()  if(any (foo2(n) /= [ 1,2,3 ])) call abort()  n = 5  if(any (foo3(n) /= [ 0,1,2,3,0 ])) call abort()end program! { dg-final { cleanup-modules "one" } }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -