1! { dg-do run }
2! Testcase for PR libfortran/31001
3  implicit none
4
5  integer :: i, j, k
6  integer, allocatable :: mm(:)
7  logical, allocatable :: mask(:)
8
9  do i = 2, -2, -1
10    do k = 0, 1
11      allocate (mm(i), mask(i))
12      mm(:) = k
13      mask(:) = (mm == 0)
14      j = count (mask)
15      print *, pack (mm, mask)
16      if (size (pack (mm, mask)) /= j) call abort
17      deallocate (mm, mask)
18    end do
19  end do
20end
21