From 5744faa9851c86d018f32de7363b1064d5348d26 Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Sat, 20 Jul 2019 19:28:37 +0200 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/predicates.md | 16 ++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 535636bb830..58220e6d264 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-07-20 Segher Boessenkool + + * 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 PR target/91204 diff --git a/gcc/config/rs6000/predicates.md b/gcc/config/rs6000/predicates.md index 5f687ead16d..13c7c02f27a 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" -- 2.30.2