summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gfortran.dg/parity_1.f90
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gfortran.dg/parity_1.f90')
-rw-r--r--gcc/testsuite/gfortran.dg/parity_1.f9040
1 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/parity_1.f90 b/gcc/testsuite/gfortran.dg/parity_1.f90
new file mode 100644
index 000000000..05f9537fa
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/parity_1.f90
@@ -0,0 +1,40 @@
+! { dg-do run }
+!
+! PR fortran/33197
+!
+! Check implementation of PARITY
+!
+implicit none
+
+integer :: i
+logical :: Lt(1) = [ .true. ]
+logical :: Lf(1) = [ .false.]
+logical :: Ltf(2) = [ .true., .false. ]
+logical :: Ltftf(4) = [.true., .false., .true.,.false.]
+
+if (parity([logical ::]) .neqv. .false.) call abort()
+if (parity([.true., .false.]) .neqv. .true.) call abort()
+if (parity([.true.]) .neqv. .true.) call abort()
+if (parity([.false.]) .neqv. .false.) call abort()
+if (parity([.true., .false., .true.,.false.]) .neqv. .false.) call abort()
+if (parity(reshape([.true., .false., .true.,.false.],[2,2])) &
+ .neqv. .false.) call abort()
+if (any (parity(reshape([.true., .false., .true.,.false.],[2,2]),dim=1) &
+ .neqv. [.true., .true.])) call abort()
+if (any (parity(reshape([.true., .false., .true.,.false.],[2,2]),dim=2) &
+ .neqv. [.false., .false.])) call abort()
+
+i = 0
+if (parity(Lt(1:i)) .neqv. .false.) call abort()
+if (parity(Ltf) .neqv. .true.) call abort()
+if (parity(Lt) .neqv. .true.) call abort()
+if (parity(Lf) .neqv. .false.) call abort()
+if (parity(Ltftf) .neqv. .false.) call abort()
+if (parity(reshape(Ltftf,[2,2])) &
+ .neqv. .false.) call abort()
+if (any (parity(reshape(Ltftf,[2,2]),dim=1) &
+ .neqv. [.true., .true.])) call abort()
+if (any (parity(reshape(Ltftf,[2,2]),dim=2) &
+ .neqv. [.false., .false.])) call abort()
+
+end