]> git.ipfire.org Git - thirdparty/gcc.git/commit
This series of patches fix PR61441. This patch avoids various transformations
authorssaraswati <ssaraswati@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Dec 2015 14:04:30 +0000 (14:04 +0000)
committerssaraswati <ssaraswati@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Dec 2015 14:04:30 +0000 (14:04 +0000)
commit9f27d92a0f688fd50e1cf5cfc638cdbaec885a3f
treeb911e1bd2a2f7a4a924f976f2156da6ea60dc25c
parentdf3be8f9acb97fcb935ca29690626769fa0a6b9c
This series of patches fix PR61441. This patch avoids various transformations
with signaling NaN operands when flag_signaling_nans is on, to avoid folding
which would lose exceptions.

Bootstrapped & regression-tested on x86_64-linux-gnu.

gcc/
* fold-const.c (const_binop): Convert sNaN to qNaN when
flag_signaling_nans is off.
(const_unop): Avoid the operation, other than NEGATE and
ABS, if flag_signaling_nans is on and the operand is an sNaN.
(fold_convert_const_real_from_real): Avoid the operation if
flag_signaling_nans is on and the operand is an sNaN.
(integer_valued_real_unary_p): Update comment stating it
returns false for sNaN values.
(integer_valued_real_binary_p, integer_valued_real_call_p): Same.
(integer_valued_real_single_p): Same.
(integer_valued_real_invalid_p, integer_valued_real_p): Same.
* fold-const-call.c (fold_const_pow): Avoid the operation
if flag_signaling_nans is on and the operand is an sNaN.
(fold_const_builtin_load_exponent) Same.
(fold_const_call_sss): Same for CASE_CFN_POWI.
* gimple-fold.c (gimple_assign_integer_valued_real_p): Same.
(gimple_call_integer_valued_real_p): Same.
(gimple_phi_integer_valued_real_p): Same.
(gimple_stmt_integer_valued_real_p): Same.
* simplify-rtx.c (simplify_const_unary_operation): Avoid the
operation if flag_signaling_nans is on and the operand is an sNaN.
(simplify_const_binary_operation): Same.
* tree-ssa-math-opts.c (gimple_expand_builtin_pow): Avoid the
operation if flag_signaling_nans is on and the operand is an sNaN.

* gcc.dg/pr61441.c: New testcase.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@231901 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/fold-const-call.c
gcc/fold-const.c
gcc/gimple-fold.c
gcc/simplify-rtx.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr61441.c [new file with mode: 0644]
gcc/tree-ssa-math-opts.c