[match.pd] PR middle-end/66915 Restrict A - B -> A + (-B) to non-fixed-point types
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Tue, 21 Jul 2015 08:26:32 +0000 (08:26 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Tue, 21 Jul 2015 08:26:32 +0000 (08:26 +0000)
PR middle-end/66915
* match.pd (A - B -> A + (-B)): Don't allow folding
when type if a fixed-point type.

From-SVN: r226028

gcc/ChangeLog
gcc/match.pd

index 58a2233297b15ed78ea7f830ed5f2cc1c11ccf95..4ede93948c4a0e3344d3f2e86ff481b00b9988fa 100644 (file)
@@ -1,3 +1,9 @@
+2015-07-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       PR middle-end/66915
+       * match.pd (A - B -> A + (-B)): Don't allow folding
+       when type if a fixed-point type.
+
 2015-07-20  DJ Delorie  <dj@redhat.com>
 
        * config/rl78/rl78-real.md (andqi3_real): Expand operands for clr1.
index 700a692229537863b28220453390bb82c9545b61..4226fb16c366f039f519f6f89323aac8fce3b275 100644 (file)
@@ -510,8 +510,8 @@ along with GCC; see the file COPYING3.  If not see
 /* A - B -> A + (-B) if B is easily negatable.  */
 (simplify
  (minus @0 negate_expr_p@1)
- (plus @0 (negate @1)))
-
+ (if (!FIXED_POINT_TYPE_P (type))
+ (plus @0 (negate @1))))
 
 /* Try to fold (type) X op CST -> (type) (X op ((type-x) CST))
    when profitable.