1! { dg-do compile }
2!
3! PR fortran/30940
4program test
5implicit none
6interface
7  subroutine foobar(x)
8     integer,dimension(4) :: x
9  end subroutine foobar
10  subroutine arr(y)
11     integer,dimension(1,2,1,2) :: y
12  end subroutine arr
13end interface
14
15integer a(3), b(5)
16call foobar(a) ! { dg-warning "contains too few elements" }
17call foobar(b)
18call foobar(b(1:3)) ! { dg-warning "contains too few elements" }
19call foobar(b(1:5))
20call foobar(b(1:5:2)) ! { dg-warning "contains too few elements" }
21call foobar(b(2))
22call foobar(b(3)) ! { dg-warning "Actual argument contains too few elements" }
23call foobar(reshape(a(1:3),[2,1])) ! { dg-warning "contains too few elements" }
24call foobar(reshape(b(2:5),[2,2]))
25
26call arr(a) ! { dg-warning "contains too few elements" }
27call arr(b)
28call arr(b(1:3)) ! { dg-warning "contains too few elements" }
29call arr(b(1:5))
30call arr(b(1:5:2)) ! { dg-warning "contains too few elements" }
31call arr(b(2))
32call arr(b(3)) ! { dg-warning "contains too few elements" }
33call arr(reshape(a(1:3),[2,1])) ! { dg-warning "contains too few elements" }
34call arr(reshape(b(2:5),[2,2]))
35end program test
36