re PR middle-end/19984 (nan should be C99 built-in)
authorUros Bizjak <uros@gcc.gnu.org>
Mon, 25 Feb 2008 11:39:15 +0000 (12:39 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Mon, 25 Feb 2008 11:39:15 +0000 (12:39 +0100)
PR middle-end/19984
* builtins.def (BUILT_IN_NAN): Define as c99 builtin
using DEF_C99_BUILTIN.
(BUILT_IN_NANF): Ditto.
(BUILT_IN_NANL): Ditto.

testsuite/ChangeLog:

PR middle-end/19984
* gcc.dg/pr19984.c: New test.
* gcc.dg/dfp/compare-special.h: Use _nan instead of nan as the
name of the variable.

From-SVN: r132617

gcc/ChangeLog
gcc/builtins.def
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/dfp/compare-special.h
gcc/testsuite/gcc.dg/pr19984.c [new file with mode: 0644]

index 74ad013828828c0d477374f6b8ca33255605e97c..4660bf9537f39215b8d0fef3f6ed372df74e9027 100644 (file)
@@ -1,3 +1,11 @@
+2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR middle-end/19984
+       * builtins.def (BUILT_IN_NAN): Define as c99 builtin
+       using DEF_C99_BUILTIN.
+       (BUILT_IN_NANF): Ditto.
+       (BUILT_IN_NANL): Ditto.
+
 2008-02-25  Ayal Zaks  <zaks@il.ibm.com>
            Revital Eres  <eres@il.ibm.com>
 
@@ -59,8 +67,8 @@
        * config/rs6000/darwin.h (SUBTARGET_INIT_BUILTINS): New macro.
        * config/rs6000/rs6000.c (rs6000_init_builtins): Call
        SUBTARGET_INIT_BUILTINS if defined.
-       * config/darwin.c (darwin_patch_builtin,
-       darwin_patch_builtins): New functions.
+       * config/darwin.c (darwin_patch_builtin, darwin_patch_builtins):
+       New functions.
 
 2008-02-23  Andrew Pinski  <andrew_pinski@playstation.sony.com>
 
index c3c8b2fa35100aea12076c9a6cc11f4a8d757661..836e241a9311d2c8d1d50dbdaaed4fac59f9c945 100644 (file)
@@ -336,9 +336,9 @@ DEF_C99_BUILTIN        (BUILT_IN_LROUNDL, "lroundl", BT_FN_LONG_LONGDOUBLE, ATTR
 DEF_LIB_BUILTIN        (BUILT_IN_MODF, "modf", BT_FN_DOUBLE_DOUBLE_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
 DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFF, "modff", BT_FN_FLOAT_FLOAT_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
 DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFL, "modfl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
-DEF_GCC_BUILTIN        (BUILT_IN_NAN, "nan", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NANF, "nanf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
-DEF_GCC_BUILTIN        (BUILT_IN_NANL, "nanl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NAN, "nan", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NANF, "nanf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
+DEF_C99_BUILTIN        (BUILT_IN_NANL, "nanl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
 DEF_GCC_BUILTIN        (BUILT_IN_NAND32, "nand32", BT_FN_DFLOAT32_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
 DEF_GCC_BUILTIN        (BUILT_IN_NAND64, "nand64", BT_FN_DFLOAT64_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
 DEF_GCC_BUILTIN        (BUILT_IN_NAND128, "nand128", BT_FN_DFLOAT128_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
index c6efd12c098983c1fc161a4cb84979295fe46063..b30d35d567f4d388afb901b58069df7787c46571 100644 (file)
@@ -1,3 +1,10 @@
+2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR middle-end/19984
+       * gcc.dg/pr19984.c: New test.
+       * gcc.dg/dfp/compare-special.h: Use _nan instead of nan as the
+       name of the variable.
+
 2008-02-25  Uros Bizjak  <ubizjak@gmail.com>
 
        * gcc.dg/vect/vect-99.c: Include stdlib.h and tree-vect.h.
index 1bd77e521563127ad34fa2dc238d969539650e1f..c5bef234424fe5f375818dc357ccba84ec5a1b12 100644 (file)
@@ -47,13 +47,13 @@ DTYPE zero  = PASTE(0.0, SUFFIX);
 DTYPE one   = PASTE(1.0, SUFFIX);
 DTYPE two   = PASTE(2.0, SUFFIX);
 
-volatile DTYPE x, y, z, nan, inf, m_inf;
+volatile DTYPE x, y, z, _nan, inf, m_inf;
 
 void
 test_compares (void)
 {
-  nan = PASTE(__builtin_nan, SUFFIX2) ("");
-  inf = PASTE(__builtin_inf, SUFFIX2) ();
+  _nan = PASTE(__builtin_nan, SUFFIX2) ("");
+  inf =  PASTE(__builtin_inf, SUFFIX2) ();
   m_inf = - PASTE(__builtin_inf, SUFFIX2) ();
 
   x = PASTE(__builtin_nan, SUFFIX2) ("");
@@ -65,14 +65,14 @@ test_compares (void)
   if (x <= two)   FAILURE ("<=", "NaN")
   if (x <= zero)  FAILURE ("<=", "NaN")
   if (x <= m_one) FAILURE ("<=", "NaN")
-  if (x <= nan)   FAILURE ("<=", "NaN")
+  if (x <= _nan)  FAILURE ("<=", "NaN")
   if (x <= inf)   FAILURE ("<=", "NaN")
   if (x <= m_inf) FAILURE ("<=", "NaN")
 
   if (two <= x)   FAILURE ("<=", "NaN")
   if (zero <= x)  FAILURE ("<=", "NaN")
   if (m_one <= x) FAILURE ("<=", "NaN")
-  if (nan <= x)   FAILURE ("<=", "NaN")
+  if (_nan <= x)  FAILURE ("<=", "NaN")
   if (inf <= x)   FAILURE ("<=", "NaN")
   if (m_inf <= x) FAILURE ("<=", "NaN")
 
@@ -102,14 +102,14 @@ test_compares (void)
   if (x < two)       FAILURE ("<", "NaN")
   if (x < zero)      FAILURE ("<", "NaN")
   if (x < m_one)     FAILURE ("<", "NaN")
-  if (x < nan)       FAILURE ("<", "NaN")
+  if (x < _nan)      FAILURE ("<", "NaN")
   if (x < inf)       FAILURE ("<", "NaN")
   if (x < m_inf)     FAILURE ("<", "NaN")
 
   if (two < x)       FAILURE ("<", "NaN")
   if (zero < x)      FAILURE ("<", "NaN")
   if (m_one < x)     FAILURE ("<", "NaN")
-  if (nan < x)       FAILURE ("<", "NaN")
+  if (_nan < x)      FAILURE ("<", "NaN")
   if (inf < x)       FAILURE ("<", "NaN")
   if (m_inf < x)     FAILURE ("<", "NaN")
 
@@ -139,14 +139,14 @@ test_compares (void)
   if (x >= two)      FAILURE (">=", "NaN")
   if (x >= zero)     FAILURE (">=", "NaN")
   if (x >= m_one)    FAILURE (">=", "NaN")
-  if (x >= nan)      FAILURE (">=", "NaN")
+  if (x >= _nan)     FAILURE (">=", "NaN")
   if (x >= inf)      FAILURE (">=", "NaN")
   if (x >= m_inf)    FAILURE (">=", "NaN")
 
   if (two >= x)      FAILURE (">=", "NaN")
   if (zero >= x)     FAILURE (">=", "NaN")
   if (m_one >= x)    FAILURE (">=", "NaN")
-  if (nan >= x)      FAILURE (">=", "NaN")
+  if (_nan >= x)     FAILURE (">=", "NaN")
   if (inf >= x)      FAILURE (">=", "NaN")
   if (m_inf >= x)    FAILURE (">=", "NaN")
 
@@ -176,14 +176,14 @@ test_compares (void)
   if (x > two)       FAILURE (">", "NaN")
   if (x > zero)      FAILURE (">", "NaN")
   if (x > m_one)     FAILURE (">", "NaN")
-  if (x > nan)       FAILURE (">", "NaN")
+  if (x > _nan)      FAILURE (">", "NaN")
   if (x > inf)       FAILURE (">", "NaN")
   if (x > m_inf)     FAILURE (">", "NaN")
 
   if (two > x)       FAILURE (">", "NaN")
   if (zero > x)      FAILURE (">", "NaN")
   if (m_one > x)     FAILURE (">", "NaN")
-  if (nan > x)       FAILURE (">", "NaN")
+  if (_nan > x)      FAILURE (">", "NaN")
   if (inf > x)       FAILURE (">", "NaN")
   if (m_inf > x)     FAILURE (">", "NaN")
 
@@ -213,14 +213,14 @@ test_compares (void)
   if (x == two)      FAILURE ("==", "NaN")
   if (x == zero)     FAILURE ("==", "NaN")
   if (x == m_one)    FAILURE ("==", "NaN")
-  if (x == nan)      FAILURE ("==", "NaN")
+  if (x == _nan)     FAILURE ("==", "NaN")
   if (x == inf)      FAILURE ("==", "NaN")
   if (x == m_inf)    FAILURE ("==", "NaN")
 
   if (two == x)      FAILURE ("==", "NaN")
   if (zero == x)     FAILURE ("==", "NaN")
   if (m_one == x)    FAILURE ("==", "NaN")
-  if (nan == x)      FAILURE ("==", "NaN")
+  if (_nan == x)     FAILURE ("==", "NaN")
   if (inf == x)      FAILURE ("==", "NaN")
   if (m_inf == x)    FAILURE ("==", "NaN")
 
@@ -250,14 +250,14 @@ test_compares (void)
   if (!(x != two))   FAILURE ("!=", "NaN")
   if (!(x != zero))  FAILURE ("!=", "NaN")
   if (!(x != m_one)) FAILURE ("!=", "NaN")
-  if (!(x != nan))   FAILURE ("!=", "NaN")
+  if (!(x != _nan))  FAILURE ("!=", "NaN")
   if (!(x != inf))   FAILURE ("!=", "NaN")
   if (!(x != m_inf)) FAILURE ("!=", "NaN")
 
   if (!(two != x))   FAILURE ("!=", "NaN")
   if (!(zero != x))  FAILURE ("!=", "NaN")
   if (!(m_one != x)) FAILURE ("!=", "NaN")
-  if (!(nan != x))   FAILURE ("!=", "NaN")
+  if (!(_nan != x))  FAILURE ("!=", "NaN")
   if (!(inf != x))   FAILURE ("!=", "NaN")
   if (!(m_inf != x)) FAILURE ("!=", "NaN")
 
diff --git a/gcc/testsuite/gcc.dg/pr19984.c b/gcc/testsuite/gcc.dg/pr19984.c
new file mode 100644 (file)
index 0000000..1b61d7f
--- /dev/null
@@ -0,0 +1,17 @@
+/* PR c/19984 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -std=c99" } */
+
+
+double nan (const char *);
+
+const double nok = nan ("");   /* { dg-warning "(not constant)|(near initialization)" } */
+
+const double ok = __builtin_nan ("");
+
+double
+foo ()
+{
+  double ok2 = nan ("");
+  return ok2;
+}