RISC-V: Refactor Dynamic LMUL codes
[official-gcc.git] / gcc / testsuite / gfortran.dg / move_alloc.f90
blobdf8b910077a26bab1ba2f603e3907021dcd41fbd
1 ! { dg-do run }
2 ! Test the move_alloc intrinsic.
4 ! Contributed by Erik Edelmann <eedelmann@gcc.gnu.org>
5 ! and Paul Thomas <pault@gcc.gnu.org>
7 program test_move_alloc
9 implicit none
10 integer, allocatable :: x(:), y(:), temp(:)
11 character(4), allocatable :: a(:), b(:)
12 integer :: i
14 allocate (x(2))
15 allocate (a(2))
17 x = [ 42, 77 ]
19 call move_alloc (x, y)
20 if (allocated(x)) STOP 1
21 if (.not.allocated(y)) STOP 2
22 if (any(y /= [ 42, 77 ])) STOP 3
24 a = [ "abcd", "efgh" ]
25 call move_alloc (a, b)
26 if (allocated(a)) STOP 4
27 if (.not.allocated(b)) STOP 5
28 if (any(b /= [ "abcd", "efgh" ])) STOP 6
30 ! Now one of the intended applications of move_alloc; resizing
32 call move_alloc (y, temp)
33 allocate (y(6), stat=i)
34 if (i /= 0) STOP 7
35 y(1:2) = temp
36 y(3:) = 99
37 deallocate(temp)
38 if (any(y /= [ 42, 77, 99, 99, 99, 99 ])) STOP 8
39 end program test_move_alloc