c: Fix up pointer types to may_alias structures [PR114493]
[official-gcc.git] / gcc / testsuite / gfortran.dg / PR94110.f90
blob4e43332b64e5f1545910460cfaaab75c193cc095
1 ! { dg-do compile }
3 ! Test the fix for PR94110
4 !
6 program asa_p
8 implicit none
10 integer, parameter :: n = 7
12 type t
13 end type t
15 interface
16 subroutine fc2 (x)
17 import :: t
18 class(t), pointer, intent(in) :: x(..)
19 end subroutine
20 end interface
22 integer :: p(n)
23 integer :: s
25 p = 1
26 s = sumf_as(p)
27 if (s/=n) stop 1
28 s = sumf_ar(p)
29 if (s/=n) stop 2
30 stop
32 contains
34 function sumf_as(a) result(s)
35 integer, target, intent(in) :: a(*)
37 integer :: s
39 s = sum_as(a) ! { dg-error "Actual argument for .a. cannot be an assumed-size array" }
40 s = sum_p_ds(a) ! { dg-error "Actual argument for .a. cannot be an assumed-size array" }
41 s = sum_p_ar(a) ! { dg-error "Actual argument for .a. cannot be an assumed-size array" }
42 return
43 end function sumf_as
45 function sumf_ar(a) result(s)
46 integer, target, intent(in) :: a(..)
48 integer :: s
50 select rank(a)
51 rank(*)
52 s = sum_as(a) ! { dg-error "Actual argument for .a. cannot be an assumed-size array" }
53 s = sum_p_ds(a) ! { dg-error "Actual argument for .a. cannot be an assumed-size array" }
54 s = sum_p_ar(a) ! { dg-error "Actual argument for .a. cannot be an assumed-size array" }
55 rank default
56 stop 3
57 end select
58 return
59 end function sumf_ar
61 function sum_as(a) result(s)
62 integer, intent(in) :: a(:)
64 integer :: s
66 s = sum(a)
67 return
68 end function sum_as
70 function sum_p_ds(a) result(s)
71 integer, pointer, intent(in) :: a(:)
73 integer :: s
75 s = -1
76 if(associated(a))&
77 s = sum(a)
78 return
79 end function sum_p_ds
81 function sum_p_ar(a) result(s)
82 integer, pointer, intent(in) :: a(..)
84 integer :: s
86 s = -1
87 select rank(a)
88 rank(1)
89 if(associated(a))&
90 s = sum(a)
91 rank default
92 stop 4
93 end select
94 return
95 end function sum_p_ar
97 subroutine sub1(y)
98 type(t), target :: y(*)
99 call fc2 (y) ! { dg-error "Actual argument for .x. cannot be an assumed-size array" }
100 end subroutine sub1
102 end program asa_p