diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2014-12-10 21:26:05 +0100 |
---|---|---|
committer | Marc Glisse <glisse@gcc.gnu.org> | 2014-12-10 20:26:05 +0000 |
commit | 1b457aa45d402df7fbf1dbd818f6d38a4c447aaa (patch) | |
tree | e0456a7b658d50a8d4d9e6f5d4d8aa1587c2f272 /gcc/real.c | |
parent | 1c4967b998b0171712d7a208c6bb68528a5449a1 (diff) | |
download | gcc-1b457aa45d402df7fbf1dbd818f6d38a4c447aaa.zip gcc-1b457aa45d402df7fbf1dbd818f6d38a4c447aaa.tar.gz gcc-1b457aa45d402df7fbf1dbd818f6d38a4c447aaa.tar.bz2 |
real.h (HONOR_NANS): Replace macro with 3 overloaded declarations.
2014-12-10 Marc Glisse <marc.glisse@inria.fr>
* real.h (HONOR_NANS): Replace macro with 3 overloaded declarations.
* real.c: Include rtl.h and options.h.
(HONOR_NANS): Define three overloads.
* builtins.c (fold_builtin_classify, fold_builtin_unordered_cmp):
Simplify argument of HONOR_NANS.
* fold-const.c (combine_comparisons, fold_truth_not_expr,
fold_cond_expr_with_comparison, merge_truthop_with_opposite_arm,
fold_comparison, fold_binary_loc): Likewise.
* ifcvt.c (noce_try_move, noce_try_minmax): Likewise.
* ipa-inline-analysis.c (add_clause,
set_cond_stmt_execution_predicate): Likewise.
* match.pd: Likewise.
* rtlanal.c (may_trap_p_1): Likewise.
* simplify-rtx.c (simplify_const_relational_operation): Likewise.
* tree-if-conv.c (parse_predicate): Likewise.
* tree-ssa-ccp.c (valid_lattice_transition): Likewise.
* tree-ssa-ifcombine.c (ifcombine_ifandif): Likewise.
* tree-ssa-phiopt.c (minmax_replacement, neg_replacement): Likewise.
* tree-ssa-reassoc.c (eliminate_using_constants): Likewise.
* tree-ssa-tail-merge.c (gimple_equal_p): Likewise.
From-SVN: r218605
Diffstat (limited to 'gcc/real.c')
-rw-r--r-- | gcc/real.c | 24 |
1 files changed, 24 insertions, 0 deletions
@@ -30,6 +30,8 @@ #include "tm_p.h" #include "dfp.h" #include "wide-int.h" +#include "rtl.h" +#include "options.h" /* The floating point model used internally is not exactly IEEE 754 compliant, and close to the description in the ISO C99 standard, @@ -4982,3 +4984,25 @@ get_max_float (const struct real_format *fmt, char *buf, size_t len) gcc_assert (strlen (buf) < len); } + +/* True if mode M has a NaN representation and + the treatment of NaN operands is important. */ + +bool +HONOR_NANS (machine_mode m) +{ + return MODE_HAS_NANS (m) && !flag_finite_math_only; +} + +bool +HONOR_NANS (const_tree t) +{ + return HONOR_NANS (element_mode (t)); +} + +bool +HONOR_NANS (const_rtx x) +{ + return HONOR_NANS (GET_MODE (x)); +} + |