summaryrefslogtreecommitdiff
path: root/gcc/config/m32c/predicates.md
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/m32c/predicates.md')
-rw-r--r--gcc/config/m32c/predicates.md11
1 files changed, 11 insertions, 0 deletions
diff --git a/gcc/config/m32c/predicates.md b/gcc/config/m32c/predicates.md
index 5b9549c6f7b..b0fbc846c89 100644
--- a/gcc/config/m32c/predicates.md
+++ b/gcc/config/m32c/predicates.md
@@ -141,6 +141,17 @@
(and (match_operand 0 "nonimmediate_operand" "")
(not (match_operand 1 "cr_operand" ""))))
+; As above, but no push/pop operations
+(define_predicate "mra_nopp_operand"
+ (match_operand 0 "mra_operand" "")
+{
+ if (GET_CODE (op) == MEM
+ && (GET_CODE (XEXP (op, 0)) == PRE_DEC
+ || (GET_CODE (XEXP (op, 0)) == POST_INC)))
+ return 0;
+ return 1;
+})
+
; TRUE for memory, r0..r3, a0..a1, or immediates.
(define_predicate "mrai_operand"
(and (and (match_operand 0 "m32c_any_operand" "")