From 6aa38454caa003e2bb9298bc1a61fcc1bca6c23d Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Fri, 30 Nov 2007 04:18:05 +0000 Subject: [PATCH] re PR fortran/34230 (Expressions of parameters evaluated with too high precision) 2007-11-29 Steven G. Kargl PR fortran/34230 * gfortran.dg/real_const_3.f90: Fix up for new range-check handling. From-SVN: r130532 --- gcc/testsuite/ChangeLog | 5 ++ gcc/testsuite/gfortran.dg/gamma_5.f90 | 1 - gcc/testsuite/gfortran.dg/real_const_3.f90 | 69 +++++++++++++--------- 3 files changed, 46 insertions(+), 29 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4a77150b92a..50468f9463f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-11-29 Steven G. Kargl + + PR fortran/34230 + * gfortran.dg/real_const_3.f90: Fix up for new range-check handling. + 2007-11-29 Zdenek Dvorak PR tree-optimization/34244 diff --git a/gcc/testsuite/gfortran.dg/gamma_5.f90 b/gcc/testsuite/gfortran.dg/gamma_5.f90 index 273b9704695..d9cb3580a60 100644 --- a/gcc/testsuite/gfortran.dg/gamma_5.f90 +++ b/gcc/testsuite/gfortran.dg/gamma_5.f90 @@ -1,5 +1,4 @@ ! { dg-do run } -! { dg-xfail-if "" { "*-*-freebsd*" } { "*" } { "" } } ! PR 33683 - we used to pick up the wrong gamma function ! from the library on some systems. program main diff --git a/gcc/testsuite/gfortran.dg/real_const_3.f90 b/gcc/testsuite/gfortran.dg/real_const_3.f90 index d6b2a968d8e..0a2efcf91ef 100644 --- a/gcc/testsuite/gfortran.dg/real_const_3.f90 +++ b/gcc/testsuite/gfortran.dg/real_const_3.f90 @@ -3,39 +3,52 @@ ! PR19310 and PR19904, allow disabling range check during compile. ! Contributed by Jerry DeLisle program main + character(len=80) str real, parameter :: zero=0, nan=0/zero complex :: z = (-0.1,-2.2)/(0.0,0.0) complex :: z2 = (0.1,1)/0 - complex :: z3 = (1e300, -2e-200)/1234e-325 - complex :: z4 = (1e-300, -2e-200)/1234e325 + complex :: z3 = (1e35, -2e3)/1.234e-37 + complex :: z4 = (1e-35, -2e-35)/1234e34 real :: a a = exp(1000.0) b = 1/exp(1000.0) - print *, a - print *, b - print *, -1.0/b - print *, b/0.0 - print *, 0.0/0.0 - print *, 1.0/-0.0 - print *, -2.0/0.0 - print *, 3.0/0.0 - print *, nan - print *, z - print *, z2 - print *, z3 - print *, z4 + + write(str,*) a + if (trim(adjustl(str)) .ne. '+Infinity') call abort + + if (b .ne. 0.) call abort + + write(str,*) -1.0/b + if (trim(adjustl(str)) .ne. '-Infinity') call abort + + write(str,*) b/0.0 + if (trim(adjustl(str)) .ne. 'NaN') call abort + + write(str,*) 0.0/0.0 + if (trim(adjustl(str)) .ne. 'NaN') call abort + + write(str,*) 1.0/-0. + if (trim(adjustl(str)) .ne. '-Infinity') call abort + + write(str,*) -2.0/0. + if (trim(adjustl(str)) .ne. '-Infinity') call abort + + write(str,*) 3.0/0. + if (trim(adjustl(str)) .ne. '+Infinity') call abort + + write(str,*) nan + if (trim(adjustl(str)) .ne. 'NaN') call abort + + write(str,*) z + if (trim(adjustl(str)) .ne. '( NaN, NaN)') call abort + + write(str,*) z2 + if (trim(adjustl(str)) .ne. '( NaN, NaN)') call abort + + write(str,*) z3 + if (trim(adjustl(str)) .ne. '( +Infinity, -Infinity)') call abort + + write(str,*) z4 + if (trim(adjustl(str)) .ne. '( 0.0000000 , -0.0000000 )') call abort end program main -!{ dg-output " \\+Infinity(\n|\r\n|\r)" } -!{ dg-output " 0.0000000 (\n|\r\n|\r)" } -!{ dg-output " -Infinity(\n|\r\n|\r)" } -!{ dg-output " NaN(\n|\r\n|\r)" } -!{ dg-output " NaN(\n|\r\n|\r)" } -!{ dg-output " -Infinity(\n|\r\n|\r)" } -!{ dg-output " -Infinity(\n|\r\n|\r)" } -!{ dg-output " \\+Infinity(\n|\r\n|\r)" } -!{ dg-output " NaN(\n|\r\n|\r)" } -!{ dg-output " \\( NaN, NaN\\)(\n|\r\n|\r)" } -!{ dg-output " \\( NaN, NaN\\)(\n|\r\n|\r)" } -!{ dg-output " \\( \\+Infinity, -Infinity\\)(\n|\r\n|\r)" } -!{ dg-output " \\( 0.0000000 , -0.0000000 \\)(\n|\r\n|\r)" }