fold-const.c (fold_binary_loc): Move (-A) * (-B) -> A * B to match.pd.
authorRichard Biener <rguenther@suse.de>
Wed, 21 Oct 2015 02:22:04 +0000 (02:22 +0000)
committerNaveen H.S <naveenh@gcc.gnu.org>
Wed, 21 Oct 2015 02:22:04 +0000 (02:22 +0000)
commit0a8f32b8fc399b3fc2da1449d92de22da83d3853
tree4c84786016633751aa90ea8c3ed33c0e5e030c43
parentd0761942a58614ec034441a96bb821048b84b0d3
fold-const.c (fold_binary_loc): Move (-A) * (-B) -> A * B to match.pd.

2015-10-20  Richard Biener  <rguenther@suse.de>
    Naveen H.S  <Naveen.Hurugalawadi@caviumnetworks.com>

* fold-const.c (fold_binary_loc) : Move (-A) * (-B) -> A * B
to match.pd.
Move (a * (1 << b)) is (a << b) to match.pd.
Move convert (C1/X)*C2 into (C1*C2)/X to match.pd.
Move ~X & X, (X == 0) & X, and !X & X are zero to match.pd.
Move X & ~X , X & (X == 0), and X & !X are zero to match.pd.

* match.pd (mult:c @0 (convert? (lshift integer_onep@1 @2))):
New simplifier.
(mult (rdiv:s REAL_CST@0 @1) REAL_CST@2): New simplifier.
(bit_and:c (convert? @0) (convert? (bit_not @0))): New simplifier.
(bit_ior (bit_and:s @0 (bit_not:s @1)) (bit_and:s (bit_not:s @0) @1))
: New simplifier.
(mult:c (convert1? (negate @0)) (convert2? negate_expr_p@1)):
New simplifier.
(match (logical_inverted_value @0) (truth_not @0)) : New Predicate.

Co-Authored-By: Naveen H.S <Naveen.Hurugalawadi@caviumnetworks.com>
From-SVN: r229107
gcc/ChangeLog
gcc/fold-const.c
gcc/match.pd