]> Savannah Git Hosting - gnulib.git/commitdiff
isnanl, isnanl-nolibm: Make a test work better with "gcc -O2" on x86_64.
authorBruno Haible <bruno@clisp.org>
Sat, 23 May 2020 17:49:42 +0000 (19:49 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 23 May 2020 17:50:24 +0000 (19:50 +0200)
* m4/exponentl.m4 (gl_LONG_DOUBLE_EXPONENT_LOCATION): Pass the
'long double' values by reference, with values taken from a statically
allocated array.

ChangeLog
m4/exponentl.m4

index b22d791c60e5e9e33e150c91d1d9397b46c18f4a..af8062c562070e37f7289189ac17d8b1d09272e7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2020-05-23  Bruno Haible  <bruno@clisp.org>
+
+       isnanl, isnanl-nolibm: Make a test work better with "gcc -O2" on x86_64.
+       * m4/exponentl.m4 (gl_LONG_DOUBLE_EXPONENT_LOCATION): Pass the
+       'long double' values by reference, with values taken from a statically
+       allocated array.
+
 2020-05-23  Bruno Haible  <bruno@clisp.org>
 
        findprog-in: Ignore directories.
index b33b3bff3e085ca1f277822c253f3bd53f5b2318..0a35c119ee60901c0f1e2d2ffa335846cf305b7f 100644 (file)
@@ -1,4 +1,4 @@
-# exponentl.m4 serial 4
+# exponentl.m4 serial 5
 dnl Copyright (C) 2007-2020 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -22,14 +22,14 @@ typedef union { long double value; unsigned int word[NWORDS]; }
         memory_long_double;
 static unsigned int ored_words[NWORDS];
 static unsigned int anded_words[NWORDS];
-static void add_to_ored_words (long double x)
+static void add_to_ored_words (long double *x)
 {
   memory_long_double m;
   size_t i;
   /* Clear it first, in case
      sizeof (long double) < sizeof (memory_long_double).  */
   memset (&m, 0, sizeof (memory_long_double));
-  m.value = x;
+  m.value = *x;
   for (i = 0; i < NWORDS; i++)
     {
       ored_words[i] |= m.word[i];
@@ -38,17 +38,15 @@ static void add_to_ored_words (long double x)
 }
 int main ()
 {
+  static long double samples[5] = { 0.25L, 0.5L, 1.0L, 2.0L, 4.0L };
   size_t j;
   FILE *fp = fopen ("conftest.out", "w");
   if (fp == NULL)
     return 1;
   for (j = 0; j < NWORDS; j++)
     anded_words[j] = ~ (unsigned int) 0;
-  add_to_ored_words (0.25L);
-  add_to_ored_words (0.5L);
-  add_to_ored_words (1.0L);
-  add_to_ored_words (2.0L);
-  add_to_ored_words (4.0L);
+  for (j = 0; j < 5; j++)
+    add_to_ored_words (&samples[j]);
   /* Remove bits that are common (e.g. if representation of the first mantissa
      bit is explicit).  */
   for (j = 0; j < NWORDS; j++)