aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-11-13 08:45:29 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-11-13 08:45:29 +0000
commit83633539b751a8ef90378ccd26b73df03c3fe40f (patch)
treef1c0128746119e270da504dedcd942085c05c2e7 /gcc
parent52a1ff8bc1fadcafdb5ac432abb5d1bdd053097c (diff)
downloadgcc-83633539b751a8ef90378ccd26b73df03c3fe40f.zip
gcc-83633539b751a8ef90378ccd26b73df03c3fe40f.tar.gz
gcc-83633539b751a8ef90378ccd26b73df03c3fe40f.tar.bz2
re PR tree-optimization/61559 (FAIL: gcc.dg/builtin-bswap-8.c on i686 with -mmovbe)
2014-12-13 Richard Biener <rguenther@suse.de> PR middle-end/61559 * match.pd: Implement bswap patterns for transforms checked by gcc.dg/builtin-bswap-8.c. From-SVN: r217464
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/match.pd14
2 files changed, 20 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 90b9639..d32aa4f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-12-13 Richard Biener <rguenther@suse.de>
+
+ PR middle-end/61559
+ * match.pd: Implement bswap patterns for transforms checked by
+ gcc.dg/builtin-bswap-8.c.
+
2014-11-13 Vladimir Makarov <vmakarov@redhat.com>
* lra.c (lra): Switch off rematerialization pass.
diff --git a/gcc/match.pd b/gcc/match.pd
index d94a8f5..1d7b153 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -576,3 +576,17 @@ along with GCC; see the file COPYING3. If not see
(simplify
(imagpart (complex @0 @1))
@1)
+
+
+/* BSWAP simplifications, transforms checked by gcc.dg/builtin-bswap-8.c. */
+(for bswap (BUILT_IN_BSWAP16 BUILT_IN_BSWAP32 BUILT_IN_BSWAP64)
+ (simplify
+ (bswap (bswap @0))
+ @0)
+ (simplify
+ (bswap (bit_not (bswap @0)))
+ (bit_not @0))
+ (for bitop (bit_xor bit_ior bit_and)
+ (simplify
+ (bswap (bitop:c (bswap @0) @1))
+ (bitop @0 (bswap @1)))))