1! { dg-do compile }
2!
3! Allocation of arrays with a type-spec specification with implicit none.
4!
5subroutine implicit_none_test1
6
7   implicit none
8
9   real, allocatable :: x(:)
10   real(4), allocatable :: x4(:)
11   real(8), allocatable :: x8(:)
12   double precision, allocatable :: d1(:)
13   doubleprecision, allocatable :: d2(:)
14   character, allocatable :: c1(:)
15   character(len=4), allocatable :: c2(:)
16
17   type a
18      integer mytype
19   end type a
20
21   type(a), allocatable :: b(:)
22
23   allocate(real :: x(1))
24   allocate(real(4) :: x4(1))
25   allocate(real(8) :: x8(1))
26   allocate(double precision :: d1(1))
27   allocate(doubleprecision :: d2(1))
28   allocate(character :: c1(1))
29   allocate(character(len=4) :: c2(1))
30   allocate(a :: b(1))
31
32end subroutine implicit_none_test1
33!
34! Allocation of a scalar with a type-spec specification with implicit none
35!
36subroutine implicit_none_test2
37
38   implicit none
39
40   real, allocatable :: x
41   real(4), allocatable :: x4
42   real(8), allocatable :: x8
43   double precision, allocatable :: d1
44   doubleprecision, allocatable :: d2
45   character, allocatable :: c1
46   character(len=4), allocatable :: c2
47
48   type a
49      integer mytype
50   end type a
51
52   type(a), allocatable :: b
53
54   allocate(real :: x)
55   allocate(real(4) :: x4)
56   allocate(real(8) :: x8)
57   allocate(double precision :: d1)
58   allocate(doubleprecision :: d2)
59   allocate(character :: c1)
60   allocate(character(len=4) :: c2)
61   allocate(a :: b)
62
63end subroutine implicit_none_test2
64!
65! Allocation of arrays with a type-spec specification with implicit none.
66!
67subroutine implicit_test3
68
69   real, allocatable :: x(:)
70   real(4), allocatable :: x4(:)
71   real(8), allocatable :: x8(:)
72   double precision, allocatable :: d1(:)
73   doubleprecision, allocatable :: d2(:)
74   character, allocatable :: c1(:)
75   character(len=4), allocatable :: c2(:)
76
77   type a
78      integer mytype
79   end type a
80
81   type(a), allocatable :: b(:)
82
83   allocate(real :: x(1))
84   allocate(real(4) :: x4(1))
85   allocate(real(8) :: x8(1))
86   allocate(double precision :: d1(1))
87   allocate(doubleprecision :: d2(1))
88   allocate(character :: c1(1))
89   allocate(character(len=4) :: c2(1))
90   allocate(a :: b(1))
91
92end subroutine implicit_test3
93!
94! Allocation of a scalar with a type-spec specification without implicit none
95!
96subroutine implicit_test4
97
98   real, allocatable :: x
99   real(4), allocatable :: x4
100   real(8), allocatable :: x8
101   double precision, allocatable :: d1
102   doubleprecision, allocatable :: d2
103   character, allocatable :: c1
104   character(len=4), allocatable :: c2
105
106   type a
107      integer mytype
108   end type a
109
110   type(a), allocatable :: b
111
112   allocate(real :: x)
113   allocate(real(4) :: x4)
114   allocate(real(8) :: x8)
115   allocate(double precision :: d1)
116   allocate(doubleprecision :: d2)
117   allocate(character :: c1)
118   allocate(character(len=4) :: c2)
119   allocate(a :: b)
120
121end subroutine implicit_test4
122