--- /dev/null
+! PR fortran/40878
+! { dg-do compile }
+! { dg-options "-fopenmp" }
+
+subroutine test1
+ integer :: j, k
+ integer :: m = 2
+!$omp parallel do collapse(m) schedule (static,1) ! { dg-error "Constant expression required" }
+ do k = 1, 2
+ do j = 1, 6
+ enddo
+ enddo
+!$omp end parallel do
+end
+subroutine test2
+ integer :: j, k
+ integer :: m
+ m = 2
+!$omp parallel do collapse(m) schedule (static,1) ! { dg-error "Constant expression required" }
+ do k = 1, 2
+ do j = 1, 6
+ enddo
+ enddo
+!$omp end parallel do
+end
+subroutine test3
+ integer :: j, k
+ integer, parameter :: m = 0
+!$omp parallel do collapse(m) schedule (static,1) ! { dg-error "not constant positive integer" }
+ do k = 1, 2
+ do j = 1, 6
+ enddo
+ enddo
+!$omp end parallel do
+end
+subroutine test4
+ integer :: j, k
+ integer, parameter :: m = -2
+!$omp parallel do collapse(m) schedule (static,1) ! { dg-error "not constant positive integer" }
+ do k = 1, 2
+ do j = 1, 6
+ enddo
+ enddo
+!$omp end parallel do
+end
+subroutine test5
+ integer :: j, k
+!$omp parallel do collapse(0) schedule (static,1) ! { dg-error "not constant positive integer" }
+ do k = 1, 2
+ do j = 1, 6
+ enddo
+ enddo
+!$omp end parallel do
+end
+subroutine test6
+ integer :: j, k
+!$omp parallel do collapse(-1) schedule (static,1) ! { dg-error "not constant positive integer" }
+ do k = 1, 2
+ do j = 1, 6
+ enddo
+ enddo
+!$omp end parallel do
+end