From 38101ca779c9b130f8559df3250c0f9d91cbd0ba Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Fri, 25 Apr 2008 22:11:21 +0200 Subject: [PATCH] array_constructor_23.f: Change REAL(10) into kind > 8. 2008-04-25 Tobias Burnus * gfortran/array_constructor_23.f: Change REAL(10) into kind > 8. * gfortran/array_constructor_24.f: New; REAL(8) version of the test. From-SVN: r134678 --- gcc/testsuite/ChangeLog | 5 ++ .../gfortran.dg/array_constructor_23.f | 3 +- .../gfortran.dg/array_constructor_24.f | 47 +++++++++++++++++++ 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/array_constructor_24.f diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ed8cd6e9148..bbb71b265ed 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-04-25 Tobias Burnus + + * gfortran/array_constructor_23.f: Change REAL(10) into kind > 8. + * gfortran/array_constructor_24.f: New; REAL(8) version of the test. + 2008-04-25 Kai Tietz * gcc.dg/array-quals-1.c: Add xfail for x86_64-*-mingw*. diff --git a/gcc/testsuite/gfortran.dg/array_constructor_23.f b/gcc/testsuite/gfortran.dg/array_constructor_23.f index 3eeedbabd58..ac57efc2440 100644 --- a/gcc/testsuite/gfortran.dg/array_constructor_23.f +++ b/gcc/testsuite/gfortran.dg/array_constructor_23.f @@ -1,4 +1,5 @@ ! { dg-do run } +! { dg-require-effective-target fortran_large_real } ! Tests the fix for PR35944/6/7, in which the variable array constructors below ! were incorrectly translated and wrong code was produced. ! @@ -34,7 +35,7 @@ subroutine fa2083 implicit none integer j1,k - parameter (k=10) !failed + parameter (k=selected_real_kind (precision (0.0_8) + 1)) ! failed REAL(k) QDA1(10) REAL(k) QDA(10), qval qda = (/ 1,2,3,4,5,6,7,8,9,10 /) diff --git a/gcc/testsuite/gfortran.dg/array_constructor_24.f b/gcc/testsuite/gfortran.dg/array_constructor_24.f new file mode 100644 index 00000000000..dad613b136e --- /dev/null +++ b/gcc/testsuite/gfortran.dg/array_constructor_24.f @@ -0,0 +1,47 @@ +! { dg-do run } +! Tests the fix for PR35944/6/7, in which the variable array constructors below +! were incorrectly translated and wrong code was produced. +! +! Contributed by Dick Hendrickson +! + program try_fa6013 + call fa6013 (10, 1, -1) + call fa6077 (10, 1, -1, (/1,2,3,4,5,6,7,8,9,10/)) + call fa2083 + end program + + subroutine FA6013 (nf10, nf1, mf1) + integer, parameter :: kv = 4 + REAL(KV) DDA1(10) + REAL(KV) DDA2(10) + REAL(KV) DDA(10), dval + dda = (/1,2,3,4,5,6,7,8,9,10/) + DDA1 = ATAN2 ((/(REAL(J1,KV),J1=1,10)/), + $ REAL((/(J1,J1=nf10,nf1,mf1)/), KV)) !fails + DDA2 = ATAN2 (DDA, DDA(10:1:-1)) + if (any (DDA1 .ne. DDA2)) call abort () + END + + subroutine FA6077 (nf10,nf1,mf1, ida) + INTEGER IDA1(10) + INTEGER IDA2(10), ida(10) + IDA1 = IEOR((/1,2,3,4,5,6,7,8,9,10/), + $ (/(IDA(J1),J1=10,1,-1)/) ) + IDA2 = IEOR ((/1,2,3,4,5,6,7,8,9,10/), (/10,9,8,7,6,5,4,3,2,1/) ) + if (any (ida1 .ne. ida2)) call abort () + END SUBROUTINE + + subroutine fa2083 + implicit none + integer j1,k + parameter (k=8) !failed for k=10 + REAL(k) QDA1(10) + REAL(k) QDA(10), qval + qda = (/ 1,2,3,4,5,6,7,8,9,10 /) + QDA1 = MOD ( 1.1_k*( QDA(1) -5.0_k), P=( QDA -2.5_k)) + DO J1 = 1,10 + QVAL = MOD(1.1_k*(QDA(1)-5.0_k),P=(QDA(J1)-2.5_k)) + if (qval .ne. qda1(j1)) call abort () + ENDDO + END + -- 2.30.2