PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gfortran.dg / deallocate_stat.f90
blob4c09ec75e73f74b6406873259ff4062b74ec9946
1 ! { dg-do run }
2 ! PR 17792
3 ! PR 21375
4 ! Test that the STAT argument to DEALLOCATE works with POINTERS and
5 ! ALLOCATABLE arrays.
6 program deallocate_stat
8 implicit none
10 integer i
11 real, pointer :: a1(:), a2(:,:), a3(:,:,:), a4(:,:,:,:), &
12 & a5(:,:,:,:,:), a6(:,:,:,:,:,:), a7(:,:,:,:,:,:,:)
14 real, allocatable :: b1(:), b2(:,:), b3(:,:,:), b4(:,:,:,:), &
15 & b5(:,:,:,:,:), b6(:,:,:,:,:,:), b7(:,:,:,:,:,:,:)
17 allocate(a1(2), a2(2,2), a3(2,2,2), a4(2,2,2,2), a5(2,2,2,2,2))
18 allocate(a6(2,2,2,2,2,2), a7(2,2,2,2,2,2,2))
20 a1 = 1. ; a2 = 2. ; a3 = 3. ; a4 = 4. ; a5 = 5. ; a6 = 6. ; a7 = 7.
22 i = 13
23 deallocate(a1, stat=i) ; if (i /= 0) STOP 1
24 deallocate(a2, stat=i) ; if (i /= 0) STOP 2
25 deallocate(a3, stat=i) ; if (i /= 0) STOP 3
26 deallocate(a4, stat=i) ; if (i /= 0) STOP 4
27 deallocate(a5, stat=i) ; if (i /= 0) STOP 5
28 deallocate(a6, stat=i) ; if (i /= 0) STOP 6
29 deallocate(a7, stat=i) ; if (i /= 0) STOP 7
31 i = 14
32 deallocate(a1, stat=i) ; if (i /= 1) STOP 8
33 deallocate(a2, stat=i) ; if (i /= 1) STOP 9
34 deallocate(a3, stat=i) ; if (i /= 1) STOP 10
35 deallocate(a4, stat=i) ; if (i /= 1) STOP 11
36 deallocate(a5, stat=i) ; if (i /= 1) STOP 12
37 deallocate(a6, stat=i) ; if (i /= 1) STOP 13
38 deallocate(a7, stat=i) ; if (i /= 1) STOP 14
40 allocate(b1(2), b2(2,2), b3(2,2,2), b4(2,2,2,2), b5(2,2,2,2,2))
41 allocate(b6(2,2,2,2,2,2), b7(2,2,2,2,2,2,2))
43 b1 = 1. ; b2 = 2. ; b3 = 3. ; b4 = 4. ; b5 = 5. ; b6 = 6. ; b7 = 7.
45 i = 13
46 deallocate(b1, stat=i) ; if (i /= 0) STOP 15
47 deallocate(b2, stat=i) ; if (i /= 0) STOP 16
48 deallocate(b3, stat=i) ; if (i /= 0) STOP 17
49 deallocate(b4, stat=i) ; if (i /= 0) STOP 18
50 deallocate(b5, stat=i) ; if (i /= 0) STOP 19
51 deallocate(b6, stat=i) ; if (i /= 0) STOP 20
52 deallocate(b7, stat=i) ; if (i /= 0) STOP 21
54 i = 14
55 deallocate(b1, stat=i) ; if (i /= 1) STOP 22
56 deallocate(b2, stat=i) ; if (i /= 1) STOP 23
57 deallocate(b3, stat=i) ; if (i /= 1) STOP 24
58 deallocate(b4, stat=i) ; if (i /= 1) STOP 25
59 deallocate(b5, stat=i) ; if (i /= 1) STOP 26
60 deallocate(b6, stat=i) ; if (i /= 1) STOP 27
61 deallocate(b7, stat=i) ; if (i /= 1) STOP 28
64 allocate(a1(2), a2(2,2), a3(2,2,2), b4(2,2,2,2), b5(2,2,2,2,2))
65 allocate(b6(2,2,2,2,2,2))
67 a1 = 1. ; a2 = 2. ; a3 = 3. ; b4 = 4. ; b5 = 5. ; b6 = 6.
69 i = 13
70 deallocate(a1, stat=i) ; if (i /= 0) STOP 29
71 deallocate(a2, a1, stat=i) ; if (i /= 1) STOP 30
72 deallocate(a1, a3, a2, stat=i) ; if (i /= 1) STOP 31
73 deallocate(b4, stat=i) ; if (i /= 0) STOP 32
74 deallocate(b4, b5, stat=i) ; if (i /= 1) STOP 33
75 deallocate(b4, b5, b6, stat=i) ; if (i /= 1) STOP 34
77 end program deallocate_stat