aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2018-07-24 13:29:07 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2018-07-24 13:29:07 +0000
commit6ec96dcb6b829b33c5d779fc19af7601c9ac1604 (patch)
tree0fcf481c40480176d00cc378cb1bad7a807b4d13
parent4f3c75ba3a62d6f3794afd10d191807a68d7ba3b (diff)
downloadgcc-6ec96dcb6b829b33c5d779fc19af7601c9ac1604.zip
gcc-6ec96dcb6b829b33c5d779fc19af7601c9ac1604.tar.gz
gcc-6ec96dcb6b829b33c5d779fc19af7601c9ac1604.tar.bz2
match.pd: Add BIT_FIELD_REF canonicalizations.
2018-07-24 Richard Biener <rguenther@suse.de> * match.pd: Add BIT_FIELD_REF canonicalizations. From-SVN: r262946
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/match.pd13
2 files changed, 17 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index cf93d5f..ff8ed78 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2018-07-24 Richard Biener <rguenther@suse.de>
+
+ * match.pd: Add BIT_FIELD_REF canonicalizations.
+
2018-07-23 Bernd Edlinger <bernd.edlinger@hotmail.de>
PR c/86617
diff --git a/gcc/match.pd b/gcc/match.pd
index 730bbab..0ae1af0c 100644
--- a/gcc/match.pd
+++ b/gcc/match.pd
@@ -4659,6 +4659,19 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
/* Canonicalizations of BIT_FIELD_REFs. */
(simplify
+ (BIT_FIELD_REF (BIT_FIELD_REF @0 @1 @2) @3 @4)
+ (BIT_FIELD_REF @0 @3 { const_binop (PLUS_EXPR, bitsizetype, @2, @4); }))
+
+(simplify
+ (BIT_FIELD_REF (view_convert @0) @1 @2)
+ (BIT_FIELD_REF @0 @1 @2))
+
+(simplify
+ (BIT_FIELD_REF @0 @1 integer_zerop)
+ (if (tree_int_cst_equal (@1, TYPE_SIZE (TREE_TYPE (@0))))
+ (view_convert @0)))
+
+(simplify
(BIT_FIELD_REF @0 @1 @2)
(switch
(if (TREE_CODE (TREE_TYPE (@0)) == COMPLEX_TYPE