From 93e501259f8eddd9c9e20d9e601335d7f40c4eac Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Mon, 25 Feb 2008 12:39:15 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 12 +++++++-- gcc/builtins.def | 6 ++--- gcc/testsuite/ChangeLog | 7 +++++ gcc/testsuite/gcc.dg/dfp/compare-special.h | 30 +++++++++++----------- gcc/testsuite/gcc.dg/pr19984.c | 17 ++++++++++++ 5 files changed, 52 insertions(+), 20 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/pr19984.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 74ad0138288..4660bf9537f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2008-02-25 Uros Bizjak + + 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 Revital Eres @@ -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 diff --git a/gcc/builtins.def b/gcc/builtins.def index c3c8b2fa351..836e241a931 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 c6efd12c098..b30d35d567f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2008-02-25 Uros Bizjak + + 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 * gcc.dg/vect/vect-99.c: Include stdlib.h and tree-vect.h. diff --git a/gcc/testsuite/gcc.dg/dfp/compare-special.h b/gcc/testsuite/gcc.dg/dfp/compare-special.h index 1bd77e52156..c5bef234424 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 00000000000..1b61d7f76b8 --- /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; +}