aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-reassoc.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2017-08-03 14:08:15 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2017-08-03 14:08:15 +0000
commit297db279102e9c5f5b32f0580a303dab6a0a5fd5 (patch)
tree9649644dcc0e27784f34ef9e8c353bf6169b6563 /gcc/tree-ssa-reassoc.c
parent75560de5f5df4a003ecf80e28bf2b926ba758e55 (diff)
downloadgcc-297db279102e9c5f5b32f0580a303dab6a0a5fd5.zip
gcc-297db279102e9c5f5b32f0580a303dab6a0a5fd5.tar.gz
gcc-297db279102e9c5f5b32f0580a303dab6a0a5fd5.tar.bz2
tree-ssa-reassoc.c (should_break_up_subtract): Also break up if the use is in USE - X.
2017-08-03 Richard Biener <rguenther@suse.de> * tree-ssa-reassoc.c (should_break_up_subtract): Also break up if the use is in USE - X. * gcc.dg/tree-ssa/reassoc-23.c: Adjust to fool early folding and CSE. From-SVN: r250855
Diffstat (limited to 'gcc/tree-ssa-reassoc.c')
-rw-r--r--gcc/tree-ssa-reassoc.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index 6ecba809..561acea 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -4729,7 +4729,9 @@ should_break_up_subtract (gimple *stmt)
&& (immusestmt = get_single_immediate_use (lhs))
&& is_gimple_assign (immusestmt)
&& (gimple_assign_rhs_code (immusestmt) == PLUS_EXPR
- || gimple_assign_rhs_code (immusestmt) == MULT_EXPR))
+ || (gimple_assign_rhs_code (immusestmt) == MINUS_EXPR
+ && gimple_assign_rhs1 (immusestmt) == lhs)
+ || gimple_assign_rhs_code (immusestmt) == MULT_EXPR))
return true;
return false;
}