2 ! Tests the fix
for PR35944
/6/7, in which the variable array constructors below
3 ! were incorrectly translated and wrong code was produced
.
5 ! Contributed by Dick Hendrickson
<dick
.hendrickson@gmail
.com
>
8 call fa6013
(10, 1, -1)
9 call fa6077
(10, 1, -1, (/1,2,3,4,5,6,7,8,9,10/))
13 subroutine FA6013
(nf10
, nf1
, mf1
)
14 integer, parameter :: kv
= 4
17 REAL(KV
) DDA
(10), dval
18 dda
= (/1,2,3,4,5,6,7,8,9,10/)
19 DDA1
= ATAN2
((/(REAL(J1
,KV
),J1
=1,10)/),
20 $
REAL((/(J1
,J1
=nf10
,nf1
,mf1
)/), KV
)) !fails
21 DDA2
= ATAN2
(DDA
, DDA
(10:1:-1))
22 if (any
(abs
(DDA1
-DDA2
) .gt
. 1.0e-6)) call abort
()
25 subroutine FA6077
(nf10
,nf1
,mf1
, ida
)
27 INTEGER IDA2
(10), ida
(10)
28 IDA1
= IEOR
((/1,2,3,4,5,6,7,8,9,10/),
29 $
(/(IDA
(J1
),J1
=10,1,-1)/) )
30 IDA2
= IEOR
((/1,2,3,4,5,6,7,8,9,10/), (/10,9,8,7,6,5,4,3,2,1/) )
31 if (any
(ida1
.ne
. ida2
)) call abort
()
37 parameter (k
=8) !failed
for k
=10
40 qda
= (/ 1,2,3,4,5,6,7,8,9,10 /)
41 QDA1
= MOD
( 1.1_k*
( QDA
(1) -5.0_k
), P
=( QDA
-2.5_k
))
43 QVAL
= MOD
(1.1_k*
(QDA
(1)-5.0_k
),P
=(QDA
(J1
)-2.5_k
))
44 if (qval
.ne
. qda1
(j1
)) call abort
()