diff options
Diffstat (limited to 'gcc/testsuite/gfortran.dg/dec_parameter_1.f')
-rw-r--r-- | gcc/testsuite/gfortran.dg/dec_parameter_1.f | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/gcc/testsuite/gfortran.dg/dec_parameter_1.f b/gcc/testsuite/gfortran.dg/dec_parameter_1.f new file mode 100644 index 00000000000..69ffa53c806 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/dec_parameter_1.f @@ -0,0 +1,64 @@ + ! { dg-do run } + ! { dg-options "-ffixed-form -std=legacy" } + ! + ! Test DEC-style PARAMETER statements without parentheses in + ! fixed form. + ! + + subroutine sub1(t, x, y) + implicit real(8) (A-H,O-Z) + parameter (pi_1 = 3.141592654d0, f_1 = 3.d08) + parameter pi_2 = 3.141592654d0, f_2 = 3.d08 + ! Note that if the parameter statements above are matched + ! incorrectly as assignments, the below specification + ! statements will be considered out-of-order and we see + ! 'unexpected specification statement'. A PARAMETER + ! statement should still be a specification statement. + + real(8), intent(in) :: t + real(8), intent(out) :: x, y + + real(8), volatile :: two + two = 2.0d0 + x = two * pi_1 * f_1 * t + y = two * pi_2 * f_2 * t + z = two * pi_3 * f_3 * t + return + end subroutine + + subroutine sub2(t, x, y, z) + implicit none + real(8) :: pi_1, pi_2, f_1, f_2 + parameter (pi_1 = 3.141592654d0, f_1 = 3.d08) + parameter pi_2 = 3.141592654d0, f_2 = 3.d08 + real(8), parameter :: pi_3 = 3.141592654d0, f_3 = 3.d08 + ! Ditto sub1 + + real(8), intent(in) :: t + real(8), intent(out) :: x, y, z + + real(8), volatile :: two + two = 2.0d0 + x = two * pi_1 * f_1 * t + y = two * pi_2 * f_2 * t + z = two * pi_3 * f_3 * t + end subroutine + + implicit none + real(8) :: x1, x2, y1, y2, z2 + real(8), volatile :: t + t = 1.5e-6 + + call sub1(t, x1, y1) + call sub2(t, x2, y2, z2) + + write(*,'(4D18.5)') t, x1, y1 + write(*,'(4D18.5)') t, x2, y2, z2 + + if (x1 .ne. x2 .or. y1 .ne. y2 + & .or. x1 .ne. y1 .or. x2 .ne. y2 + & .or. y2 .ne. z2) then + call abort() + endif + + end |