diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-01-08 13:20:13 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-01-08 13:20:13 +0000 |
commit | 81713f9386aaa3397ac44284a7d6f90fc4b7040e (patch) | |
tree | f10f2534b770430a68f03c63d4712a183babb994 /gcc/real.h | |
parent | 39e46e4d64364c5b3381604f6158672745e19d64 (diff) | |
download | gcc-81713f9386aaa3397ac44284a7d6f90fc4b7040e.tar.gz |
2010-01-08 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 155725
{{also coded a bit the infix parser in gcc/melt/ etc..}}
{{merged with trunk rev 155725, and minor additions}}
* gcc/melt-runtime.c: removed useless trailing spaces.
* gcc/melt/warmelt-infixsyntax.melt: added more, notably
class_infix_parser, class_infix_delimiter some delimiters and our
backtrackable getlex & peeklex functions. Still very incomplete.
* gcc/melt/warmelt-outobj.melt: added the translate_macroexpanded_list
function to ease factoring out the common translation between
infix & lisp syntaxes.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@155734 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/real.h')
-rw-r--r-- | gcc/real.h | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/gcc/real.h b/gcc/real.h index e6fa0d2d859..980bf960f5f 100644 --- a/gcc/real.h +++ b/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. @@ -199,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. */ |