--- /dev/null
+! { dg-do run }
+! PR fortran/96890 - Wrong answer with intrinsic IALL
+program p
+ implicit none
+ integer :: iarr1(0), iarr2(2,2), iarr3(2,2,2)
+ logical :: mask1(0), mask2(2,2), mask3(2,2,2)
+
+ if ( iall(iarr1, mask1) /= -1 ) stop 1
+ if ( iall(iarr1, 1, mask1) /= -1 ) stop 2
+
+ iarr2 = reshape ([ 1, 2, 3, 4 ], shape (iarr2))
+ mask2 = reshape ([ .true., .false., .true., .false. ], shape (mask2))
+
+ if (any (iall(iarr2, 2, mask2) /= [1,-1]) ) stop 3
+
+ iarr3 = reshape ([ 1, 2, 3, 4, &
+ 5, 6, 7, 8 ], shape (iarr3))
+ mask3 = reshape ([ .true., .false., .true., .false.,&
+ .true., .false., .true., .false. ], shape (iarr3))
+
+ if (any (iall(iarr3, 2, mask3) /= reshape ([1,-1,5,-1],[2,2]))) stop 4
+end