From: Francois-Xavier Coudert Date: Fri, 31 Dec 2021 22:19:03 +0000 (+0100) Subject: Fortran: Fix test on targets without REAL128 X-Git-Tag: upstream/12.2.0~2537 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cb48166e52c0f159eb80a0666c4847825e294ec0;p=platform%2Fupstream%2Fgcc.git Fortran: Fix test on targets without REAL128 REAL128 is a named constant, so we cannot simply use (REAL128 > 0) to conditionally compile for targets with REAL128. gcc/testsuite/ChangeLog: PR fortran/89639 * gfortran.dg/ieee/ieee_9.f90: Adjust test for targets without REAL128. --- diff --git a/gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 b/gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 index 5e0ac36..e5935ec 100644 --- a/gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 +++ b/gcc/testsuite/gfortran.dg/ieee/ieee_9.f90 @@ -1,71 +1,45 @@ -! { dg-do run { xfail arm*-*-gnueabi arm*-*-gnueabihf } } -! { dg-skip-if "PR89639" { hppa*-*-linux* } } +! { dg-do run } program foo use ieee_arithmetic use iso_fortran_env + implicit none + + ! This allows us to test REAL128 if it exists, and still compile + ! on platforms were it is not present + ! https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89639 + integer, parameter :: large = merge(real128, real64, real128 > 0) + integer i, p real x x = 4 i = 4 - if (int8 > 0) then - if (real32 > 0) then - p = int(ieee_scalb(real(x, real32), int(i, int8))) - if (p /= 64) stop 1 - endif - if (real64 > 0) then - p = int(ieee_scalb(real(x, real64), int(i, int8))) - if (p /= 64) stop 2 - endif - if (real128 > 0) then - p = int(ieee_scalb(real(x, real128), int(i, int8))) - if (p /= 64) stop 3 - end if - end if + p = int(ieee_scalb(real(x, real32), int(i, int8))) + if (p /= 64) stop 1 + p = int(ieee_scalb(real(x, real64), int(i, int8))) + if (p /= 64) stop 2 + p = int(ieee_scalb(real(x, large), int(i, int8))) + if (p /= 64) stop 3 - if (int16 > 0) then - if (real32 > 0) then - p = int(ieee_scalb(real(x, real32), int(i, int16))) - if (p /= 64) stop 4 - endif - if (real64 > 0) then - p = int(ieee_scalb(real(x, real64), int(i, int16))) - if (p /= 64) stop 5 - endif - if (real128 > 0) then - p = int(ieee_scalb(real(x, real128), int(i, int16))) - if (p /= 64) stop 6 - end if - end if + p = int(ieee_scalb(real(x, real32), int(i, int16))) + if (p /= 64) stop 4 + p = int(ieee_scalb(real(x, real64), int(i, int16))) + if (p /= 64) stop 5 + p = int(ieee_scalb(real(x, large), int(i, int16))) + if (p /= 64) stop 6 - if (int32 > 0) then - if (real32 > 0) then - p = int(ieee_scalb(real(x, real32), int(i, int32))) - if (p /= 64) stop 7 - endif - if (real64 > 0) then - p = int(ieee_scalb(real(x, real64), int(i, int32))) - if (p /= 64) stop 8 - endif - if (real128 > 0) then - p = int(ieee_scalb(real(x, real128), int(i, int32))) - if (p /= 64) stop 9 - end if - end if + p = int(ieee_scalb(real(x, real32), int(i, int32))) + if (p /= 64) stop 7 + p = int(ieee_scalb(real(x, real64), int(i, int32))) + if (p /= 64) stop 8 + p = int(ieee_scalb(real(x, large), int(i, int32))) + if (p /= 64) stop 9 - if (int64 > 0) then - if (real32 > 0) then - p = int(ieee_scalb(real(x, real32), int(i, int64))) - if (p /= 64) stop 10 - endif - if (real64 > 0) then - p = int(ieee_scalb(real(x, real64), int(i, int64))) - if (p /= 64) stop 11 - endif - if (real128 > 0) then - p = int(ieee_scalb(real(x, real128), int(i, int64))) - if (p /= 64) stop 12 - end if - end if + p = int(ieee_scalb(real(x, real32), int(i, int64))) + if (p /= 64) stop 10 + p = int(ieee_scalb(real(x, real64), int(i, int64))) + if (p /= 64) stop 11 + p = int(ieee_scalb(real(x, large), int(i, int64))) + if (p /= 64) stop 12 end program foo