[gcc(refs/users/meissner/heads/work038)] Force IBM long double for conversion test on PowerPC.

Michael Meissner meissner@gcc.gnu.org
Mon Feb 22 22:34:46 GMT 2021


https://gcc.gnu.org/g:c08ae3e5cc36069fd63c90ff1b7b8e4f2f0bda38

commit c08ae3e5cc36069fd63c90ff1b7b8e4f2f0bda38
Author: Michael Meissner <meissner@linux.ibm.com>
Date:   Mon Feb 22 17:34:13 2021 -0500

    Force IBM long double for conversion test on PowerPC.
    
    The test c-c++-common/dfp/convert-bfp-11.c explicit expects long double to use
    the IBM 128-bit extended double format.  In particular, some of the tests
    expect an infinity to be created if decimal values that are converted that are
    too large for IBM extended double.  However, the numbers do fit in the range
    for IEEE 128-bit format, since it has a larger exponent than the IBM 128-bit
    format.  The test fails because an infinity is not generated.
    
    This patch explicitly sets the long double type to IBM extended double.
    
    gcc/testsuite/
    2021-02-22  Michael Meissner  <meissner@linux.ibm.com>
    
            * c-c++-common/dfp/convert-bfp-11.c: Force using IBM 128-bit long
            double.  Remove check for 64-bit long double.

Diff:
---
 gcc/testsuite/c-c++-common/dfp/convert-bfp-11.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/gcc/testsuite/c-c++-common/dfp/convert-bfp-11.c b/gcc/testsuite/c-c++-common/dfp/convert-bfp-11.c
index 95c433d2c24..35da07d1fa4 100644
--- a/gcc/testsuite/c-c++-common/dfp/convert-bfp-11.c
+++ b/gcc/testsuite/c-c++-common/dfp/convert-bfp-11.c
@@ -1,9 +1,14 @@
-/* { dg-skip-if "" { ! "powerpc*-*-linux*" } } */
+/* { dg-require-effective-target dfp } */
+/* { dg-require-effective-target ppc_long_double_override_ibm128 } */
+/* { dg-add-options ppc_long_double_override_ibm128 } */
 
-/* Test decimal float conversions to and from IBM 128-bit long double. 
-   Checks are skipped at runtime if long double is not 128 bits.
-   Don't force 128-bit long doubles because runtime support depends
-   on glibc.  */
+/* We force the long double type to be IBM 128-bit because the CONVERT_TO_PINF
+   tests will fail if we use IEEE 128-bit floating point.  This is due to IEEE
+   128-bit having a larger exponent range than IBM 128-bit extended double.  So
+   tests that would generate an infinity with IBM 128-bit will generate a
+   normal number with IEEE 128-bit.  */
+
+/* Test decimal float conversions to and from IBM 128-bit long double.   */
 
 #include "convert.h"
 
@@ -36,9 +41,6 @@ CONVERT_TO_PINF (312, tf, sd, 1.6e+308L, d32)
 int
 main ()
 {
-  if (sizeof (long double) != 16)
-    return 0;
-
   convert_101 ();
   convert_102 ();


More information about the Gcc-cvs mailing list