From 554fd8c5195424bdbcabf5de30fdc183aba391bd Mon Sep 17 00:00:00 2001 From: upstream source tree Date: Sun, 15 Mar 2015 20:14:05 -0400 Subject: obtained gcc-4.6.4.tar.bz2 from upstream website; verified gcc-4.6.4.tar.bz2.sig; imported gcc-4.6.4 source tree from verified upstream tarball. downloading a git-generated archive based on the 'upstream' tag should provide you with a source tree that is binary identical to the one extracted from the above tarball. if you have obtained the source via the command 'git clone', however, do note that line-endings of files in your working directory might differ from line-endings of the respective files in the upstream repository. --- gcc/testsuite/gfortran.dg/transfer_simplify_3.f90 | 53 +++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/transfer_simplify_3.f90 (limited to 'gcc/testsuite/gfortran.dg/transfer_simplify_3.f90') diff --git a/gcc/testsuite/gfortran.dg/transfer_simplify_3.f90 b/gcc/testsuite/gfortran.dg/transfer_simplify_3.f90 new file mode 100644 index 000000000..43ca19726 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/transfer_simplify_3.f90 @@ -0,0 +1,53 @@ +! { dg-do run } +! { dg-options "-fno-range-check" } +! PR fortran/32083 +! +! Test transfers of +Inf and -Inf +! Testcase contributed by Jos de Kloe +! + +PROGRAM TestInfinite + IMPLICIT NONE + integer, parameter :: i8_ = Selected_Int_Kind(18) ! = integer*8 + integer, parameter :: r8_ = Selected_Real_Kind(15,307) ! = real*8 + + integer(i8_), parameter :: bit_pattern_PosInf_i8_p = 9218868437227405312_i8_ + integer(i8_), parameter :: bit_pattern_NegInf_i8_p = -4503599627370496_i8_ + + integer(i8_) :: bit_pattern_PosInf_i8 = 9218868437227405312_i8_ + integer(i8_) :: bit_pattern_NegInf_i8 = -4503599627370496_i8_ + + integer(i8_) :: bit_pattern_PosInf_i8_hex + integer(i8_) :: bit_pattern_NegInf_i8_hex + + integer(i8_) :: i + real(r8_) :: r + + data bit_pattern_PosInf_i8_hex /z'7FF0000000000000'/ + !data bit_pattern_NegInf_i8_hex /z'FFF0000000000000'/ + ! not portable, replaced by: + bit_pattern_NegInf_i8_hex = ibset(bit_pattern_PosInf_i8_hex,63) + + if (bit_pattern_NegInf_i8_hex /= bit_pattern_NegInf_i8) call abort() + if (bit_pattern_PosInf_i8_hex /= bit_pattern_PosInf_i8) call abort() + + r = transfer(bit_pattern_PosInf_i8,r) + if (r /= 1.0_r8_/0.0_r8_) call abort() + i = transfer(r,i) + if (bit_pattern_PosInf_i8 /= i) call abort() + + r = transfer(bit_pattern_NegInf_i8,r) + if (r /= -1.0_r8_/0.0_r8_) call abort() + i = transfer(r,i) + if (bit_pattern_NegInf_i8 /= i) call abort() + + r = transfer(bit_pattern_PosInf_i8_p,r) + if (r /= 1.0_r8_/0.0_r8_) call abort() + i = transfer(r,i) + if (bit_pattern_PosInf_i8_p /= i) call abort() + + r = transfer(bit_pattern_NegInf_i8_p,r) + if (r /= -1.0_r8_/0.0_r8_) call abort() + i = transfer(r,i) + if (bit_pattern_NegInf_i8_p /= i) call abort() +END PROGRAM TestInfinite -- cgit v1.2.3