aliasing_dummy_1.f90

来自「用于进行gcc测试」· F90 代码 · 共 64 行

F90
64
字号
! { dg-do run }! This tests the fix for PR24276, which originated from the Loren P. Meissner example,! Array_List.  The PR concerns dummy argument aliassing of components of arrays of derived! types as arrays of the type of the component.  gfortran would compile and run this! example but the stride used did not match the actual argument.  This test case exercises! a procedure call (to foo2, below) that is identical to Array_List's.!! Contributed by Paul Thomas  <pault@gcc.gnu.org>program test_lex  type :: dtype    integer :: n    character*5 :: word  end type dtype  type :: list    type(dtype), dimension(4) :: list    integer :: l = 4  end type list   type(list) :: table  type(dtype) :: elist(2,2)  table%list = (/dtype (1 , "one  "), dtype (2 , "two  "), dtype (3 , "three"), dtype (4 , "four ")/)! Test 1D with assumed shape (original bug) and assumed size.  call bar (table, 2, 4)  if (any (table%list%word.ne.(/"one  ","i=  2","three","i=  4"/))) call abort ()  elist = reshape (table%list, (/2,2/))! Check 2D is OK with assumed shape and assumed size.  call foo3 (elist%word, 1)  call foo1 (elist%word, 3)  if (any (elist%word.ne.reshape ((/"i=  1","i=  2","i=  3","i=  4"/), (/2,2/)))) call abort ()contains  subroutine bar (table, n, m)    type(list) :: table    integer n, m    call foo1 (table%list(:table%l)%word, n)    call foo2 (table%list(:table%l)%word, m)  end subroutine bar  subroutine foo1 (slist, i)    character(*), dimension(*) :: slist    integer i    write (slist(i), '(2hi=,i3)') i  end subroutine foo1  subroutine foo2 (slist, i)    character(5), dimension(:) :: slist    integer i    write (slist(i), '(2hi=,i3)') i  end subroutine foo2  subroutine foo3 (slist, i)    character(5), dimension(:,:) :: slist    integer i    write (slist(1,1), '(2hi=,i3)') i  end subroutine foo3end program test_lex

⌨️ 快捷键说明

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