1! { dg-do run }
2program main
3  implicit none
4  real, allocatable :: a(:), b(:,:)
5  integer :: n,m
6  character (len=2) :: one, two
7
8  one = ' 1'
9  two = ' 2'
10
11  allocate (a(1:-1))
12  if (size(a) /= 0) call abort
13  deallocate (a)
14
15  allocate (b(1:-1,0:10))
16  if (size(b) /= 0) call abort
17  deallocate (b)
18
19  ! Use variables for array bounds.  The internal reads
20  ! are there to hide fact that these are actually constant.
21
22  read (unit=one, fmt='(I2)') n
23  allocate (a(n:-1))
24  if (size(a) /= 0) call abort
25  deallocate (a)
26
27  read (unit=two, fmt='(I2)') m
28  allocate (b(1:3, m:0))
29  if (size(b) /= 0) call abort
30  deallocate (b)
31end program main
32