diff options
author | Marc Glisse <marc.glisse@inria.fr> | 2017-06-27 11:42:38 +0200 |
---|---|---|
committer | Marc Glisse <glisse@gcc.gnu.org> | 2017-06-27 09:42:38 +0000 |
commit | 1e7df2e63a369ffcc658dd5e1e3d57dabaa017c2 (patch) | |
tree | d28a305d3ebd2b2fe57a0c6fb6116646e7bc98ea /gcc/match.pd | |
parent | a889d6aa2730c084c338576b5a133134f142ce88 (diff) | |
download | gcc-1e7df2e63a369ffcc658dd5e1e3d57dabaa017c2.zip gcc-1e7df2e63a369ffcc658dd5e1e3d57dabaa017c2.tar.gz gcc-1e7df2e63a369ffcc658dd5e1e3d57dabaa017c2.tar.bz2 |
Simple reassoc transforms in match.pd
2017-06-27 Marc Glisse <marc.glisse@inria.fr>
gcc/
* match.pd ((A+-B)+(C-A), (A+B)-(A-C)): New transformations.
gcc/testsuite/
* gcc.dg/tree-ssa/assoc-1.c: New file.
From-SVN: r249686
Diffstat (limited to 'gcc/match.pd')
-rw-r--r-- | gcc/match.pd | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/match.pd b/gcc/match.pd index a4cae11..083a574 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1321,6 +1321,18 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (simplify (minus @0 (minus @0 @1)) @1) + /* (A +- B) + (C - A) -> C +- B */ + /* (A + B) - (A - C) -> B + C */ + /* More cases are handled with comparisons. */ + (simplify + (plus:c (plus:c @0 @1) (minus @2 @0)) + (plus @2 @1)) + (simplify + (plus:c (minus @0 @1) (minus @2 @0)) + (minus @2 @1)) + (simplify + (minus (plus:c @0 @1) (minus @0 @2)) + (plus @1 @2)) /* (A +- CST1) +- CST2 -> A + CST3 Use view_convert because it is safe for vectors and equivalent for |