aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2008-02-25 12:39:15 +0100
committerUros Bizjak <uros@gcc.gnu.org>2008-02-25 12:39:15 +0100
commit93e501259f8eddd9c9e20d9e601335d7f40c4eac (patch)
treec8c909fe82d9873ca626a8f6c90bcc8b5449be0a /gcc
parent433331d4033f0dd4db8ba9913db0992aefb7ffce (diff)
downloadgcc-93e501259f8eddd9c9e20d9e601335d7f40c4eac.zip
gcc-93e501259f8eddd9c9e20d9e601335d7f40c4eac.tar.gz
gcc-93e501259f8eddd9c9e20d9e601335d7f40c4eac.tar.bz2
re PR middle-end/19984 (nan should be C99 built-in)
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/builtins.def6
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.dg/dfp/compare-special.h30
-rw-r--r--gcc/testsuite/gcc.dg/pr19984.c17
5 files changed, 52 insertions, 20 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 74ad013..4660bf9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
diff --git a/gcc/builtins.def b/gcc/builtins.def
index c3c8b2f..836e241 100644
--- a/gcc/builtins.def
+++ b/gcc/builtins.def
@@ -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)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c6efd12..b30d35d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,12 @@
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.
(main): Call check_vect and foo. Check array values after
the call to foo.
diff --git a/gcc/testsuite/gcc.dg/dfp/compare-special.h b/gcc/testsuite/gcc.dg/dfp/compare-special.h
index 1bd77e5..c5bef23 100644
--- a/gcc/testsuite/gcc.dg/dfp/compare-special.h
+++ b/gcc/testsuite/gcc.dg/dfp/compare-special.h
@@ -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
index 0000000..1b61d7f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr19984.c
@@ -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;
+}