diff options
author | Richard Biener <rguenther@suse.de> | 2016-10-04 13:18:18 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-10-04 13:18:18 +0000 |
commit | d96a55858cbdf50f70a7440906ff67f8936c4f08 (patch) | |
tree | 4a5ee7ef89f0e7f87e663872b526960b3f18cfd1 | |
parent | 43c40f3e43aea07477d025eedc818e1bd10385d0 (diff) | |
download | gcc-d96a55858cbdf50f70a7440906ff67f8936c4f08.zip gcc-d96a55858cbdf50f70a7440906ff67f8936c4f08.tar.gz gcc-d96a55858cbdf50f70a7440906ff67f8936c4f08.tar.bz2 |
re PR middle-end/77407 (Optimize integer i / abs (i) into the sign of i)
2016-10-04 Richard Biener <rguenther@suse.de>
PR middle-end/77407
* match.pd (X / abs (X) -> X < 0 ? -1 : 1): Drop vector
type support, mark with :C.
(X / -X -> -1): Mark with :C.
From-SVN: r240742
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/match.pd | 6 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index efed569..d182496 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2016-10-04 Richard Biener <rguenther@suse.de> + + PR middle-end/77407 + * match.pd (X / abs (X) -> X < 0 ? -1 : 1): Drop vector + type support, mark with :C. + (X / -X -> -1): Mark with :C. + 2016-10-04 Jakub Jelinek <jakub@redhat.com> * defaults.h (JCR_SECTION_NAME, TARGET_USE_JCR_SECTION): Remove. diff --git a/gcc/match.pd b/gcc/match.pd index ba7e013..dadf51c 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -155,14 +155,14 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (negate @0))) /* X / abs (X) is X < 0 ? -1 : 1. */ (simplify - (div @0 (abs @0)) - (if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type)) + (div:C @0 (abs @0)) + (if (INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type)) (cond (lt @0 { build_zero_cst (type); }) { build_minus_one_cst (type); } { build_one_cst (type); }))) /* X / -X is -1. */ (simplify - (div @0 (negate @0)) + (div:C @0 (negate @0)) (if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type)) && TYPE_OVERFLOW_UNDEFINED (type)) { build_minus_one_cst (type); }))) |