aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2019-07-20 19:28:37 +0200
committerSegher Boessenkool <segher@gcc.gnu.org>2019-07-20 19:28:37 +0200
commit5744faa9851c86d018f32de7363b1064d5348d26 (patch)
treea3dcfae9ff95828f8da328596b4908ad3ef007e4
parent4b3df2657401475f94a7fc60e4e7f8ed6bbe2610 (diff)
downloadgcc-5744faa9851c86d018f32de7363b1064d5348d26.zip
gcc-5744faa9851c86d018f32de7363b1064d5348d26.tar.gz
gcc-5744faa9851c86d018f32de7363b1064d5348d26.tar.bz2
rs6000: New predicate any_memory_operand
The new predicate accepts both memory_operand and volatile_mem_operand. * config/rs6000/predicates.md (volatile_mem_operand): Modernize syntax. (any_memory_operand): New predicate. (reg_or_mem_operand): Use it. From-SVN: r273630
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/rs6000/predicates.md16
2 files changed, 16 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 535636b..58220e6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2019-07-20 Segher Boessenkool <segher@kernel.crashing.org>
+
+ * config/rs6000/predicates.md (volatile_mem_operand): Modernize syntax.
+ (any_memory_operand): New predicate.
+ (reg_or_mem_operand): Use it.
+
2019-07-20 Jakub Jelinek <jakub@redhat.com>
PR target/91204
diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md
index 5f687ea..13c7c02 100644
--- a/gcc/config/rs6000/predicates.md
+++ b/gcc/config/rs6000/predicates.md
@@ -703,12 +703,17 @@
;; memory references. So this function allows us to recognize volatile
;; references where it's safe.
(define_predicate "volatile_mem_operand"
- (and (and (match_code "mem")
- (match_test "MEM_VOLATILE_P (op)"))
+ (and (match_code "mem")
+ (match_test "MEM_VOLATILE_P (op)")
(if_then_else (match_test "reload_completed")
(match_operand 0 "memory_operand")
(match_test "memory_address_p (mode, XEXP (op, 0))"))))
+;; Return 1 if the operand is a volatile or non-volatile memory operand.
+(define_predicate "any_memory_operand"
+ (ior (match_operand 0 "memory_operand")
+ (match_operand 0 "volatile_mem_operand")))
+
;; Return 1 if the operand is an offsettable memory operand.
(define_predicate "offsettable_mem_operand"
(and (match_operand 0 "memory_operand")
@@ -891,11 +896,10 @@
;; Return 1 if the operand is a general non-special register or memory operand.
(define_predicate "reg_or_mem_operand"
- (ior (match_operand 0 "memory_operand")
+ (ior (match_operand 0 "gpc_reg_operand")
+ (match_operand 0 "any_memory_operand")
(and (match_code "mem")
- (match_test "macho_lo_sum_memory_operand (op, mode)"))
- (match_operand 0 "volatile_mem_operand")
- (match_operand 0 "gpc_reg_operand")))
+ (match_test "macho_lo_sum_memory_operand (op, mode)"))))
;; Return 1 if the operand is CONST_DOUBLE 0, register or memory operand.
(define_predicate "zero_reg_mem_operand"