diff options
author | tnfchris <tnfchris@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-08-23 11:32:47 +0000 |
---|---|---|
committer | tnfchris <tnfchris@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-08-23 11:32:47 +0000 |
commit | 3aa2a10ca97488dbe00dfc3d9fed647daf3fb042 (patch) | |
tree | 4bb565e98c8d62a56a5a0ca26a443fdf6d3d8bf7 | |
parent | c85275b4b94a99015525321efcf2028c7b5358f4 (diff) | |
download | gcc-3aa2a10ca97488dbe00dfc3d9fed647daf3fb042.tar.gz |
2017-08-23 Tamar Christina <tamar.christina@arm.com>
PR middle-end/19706
* tree-ssa-math-opts.c (convert_expand_mult_copysign):
Fix single-use check.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@251303 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-ssa-math-opts.c | 7 |
2 files changed, 9 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d5ada51a671..1c7462f7ef2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-08-23 Tamar Christina <tamar.christina@arm.com> + + PR middle-end/19706 + * tree-ssa-math-opts.c (convert_expand_mult_copysign): + Fix single-use check. + 2017-08-23 Thomas Preud'homme <thomas.preudhomme@arm.com> * gcc.c (execute): Only test for SIGKILL and SIGQUIT if available. diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c index 0d75751f230..073c9dc19ac 100644 --- a/gcc/tree-ssa-math-opts.c +++ b/gcc/tree-ssa-math-opts.c @@ -3200,21 +3200,20 @@ convert_expand_mult_copysign (gimple *stmt, gimple_stmt_iterator *gsi) type = TREE_TYPE (lhs); machine_mode mode = TYPE_MODE (type); - if (HONOR_SNANS (type) || !has_single_use (lhs)) + if (HONOR_SNANS (type)) return false; if (TREE_CODE (treeop0) == SSA_NAME && TREE_CODE (treeop1) == SSA_NAME) { gimple *call0 = SSA_NAME_DEF_STMT (treeop0); - if (!is_copysign_call_with_1 (call0)) + if (!has_single_use (treeop0) || !is_copysign_call_with_1 (call0)) { call0 = SSA_NAME_DEF_STMT (treeop1); - if (!is_copysign_call_with_1 (call0)) + if (!has_single_use (treeop1) || !is_copysign_call_with_1 (call0)) return false; treeop1 = treeop0; } - if (optab_handler (xorsign_optab, mode) == CODE_FOR_nothing) return false; |