| Index: gcc/gcc/real.h
|
| diff --git a/gcc/gcc/real.h b/gcc/gcc/real.h
|
| index 5a686536608c24d283cdd55d5f497c5268410524..980bf960f5feda8450233dc3115952d61b1e80de 100644
|
| --- a/gcc/gcc/real.h
|
| +++ b/gcc/gcc/real.h
|
| @@ -1,6 +1,7 @@
|
| /* Definitions of floating-point access for GNU compiler.
|
| Copyright (C) 1989, 1991, 1994, 1996, 1997, 1998, 1999,
|
| - 2000, 2002, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
|
| + 2000, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010
|
| + Free Software Foundation, Inc.
|
|
|
| This file is part of GCC.
|
|
|
| @@ -24,6 +25,8 @@
|
| #ifndef GENERATOR_FILE
|
| #include <gmp.h>
|
| #include <mpfr.h>
|
| +#include <mpc.h>
|
| +extern tree do_mpc_arg2 (tree, tree, tree, int, int (*)(mpc_ptr, mpc_srcptr, mpc_srcptr, mpc_rnd_t));
|
| #endif
|
| #include "machmode.h"
|
|
|
| @@ -43,8 +46,7 @@ enum real_value_class {
|
| #define SIGSZ (SIGNIFICAND_BITS / HOST_BITS_PER_LONG)
|
| #define SIG_MSB ((unsigned long)1 << (HOST_BITS_PER_LONG - 1))
|
|
|
| -struct real_value GTY(())
|
| -{
|
| +struct GTY(()) real_value {
|
| /* Use the same underlying type for all bit-fields, so as to make
|
| sure they're packed together, otherwise REAL_VALUE_TYPE_SIZE will
|
| be miscomputed. */
|
| @@ -198,6 +200,31 @@ extern const struct real_format *
|
| (FLOAT_MODE_P (MODE) \
|
| && FLOAT_MODE_FORMAT (MODE)->has_sign_dependent_rounding)
|
|
|
| +/* True if the given mode has a NaN representation and the treatment of
|
| + NaN operands is important. Certain optimizations, such as folding
|
| + x * 0 into 0, are not correct for NaN operands, and are normally
|
| + disabled for modes with NaNs. The user can ask for them to be
|
| + done anyway using the -funsafe-math-optimizations switch. */
|
| +#define HONOR_NANS(MODE) \
|
| + (MODE_HAS_NANS (MODE) && !flag_finite_math_only)
|
| +
|
| +/* Like HONOR_NANs, but true if we honor signaling NaNs (or sNaNs). */
|
| +#define HONOR_SNANS(MODE) (flag_signaling_nans && HONOR_NANS (MODE))
|
| +
|
| +/* As for HONOR_NANS, but true if the mode can represent infinity and
|
| + the treatment of infinite values is important. */
|
| +#define HONOR_INFINITIES(MODE) \
|
| + (MODE_HAS_INFINITIES (MODE) && !flag_finite_math_only)
|
| +
|
| +/* Like HONOR_NANS, but true if the given mode distinguishes between
|
| + positive and negative zero, and the sign of zero is important. */
|
| +#define HONOR_SIGNED_ZEROS(MODE) \
|
| + (MODE_HAS_SIGNED_ZEROS (MODE) && flag_signed_zeros)
|
| +
|
| +/* Like HONOR_NANS, but true if given mode supports sign-dependent rounding,
|
| + and the rounding mode is important. */
|
| +#define HONOR_SIGN_DEPENDENT_ROUNDING(MODE) \
|
| + (MODE_HAS_SIGN_DEPENDENT_ROUNDING (MODE) && flag_rounding_math)
|
|
|
| /* Declare functions in real.c. */
|
|
|
| @@ -304,6 +331,8 @@ extern const struct real_format real_internal_format;
|
| extern const struct real_format decimal_single_format;
|
| extern const struct real_format decimal_double_format;
|
| extern const struct real_format decimal_quad_format;
|
| +extern const struct real_format ieee_half_format;
|
| +extern const struct real_format arm_half_format;
|
|
|
|
|
| /* ====================================================================== */
|
|
|