+2015-05-18 Uros Bizjak <ubizjak@gmail.com>
+ Richard Henderson <rth@redhat.com>
+
+ PR target/57032
+ * config/alpha/constraints.md (Q): Rewrite as define_memory_constraint.
+ Check for a memory location that is not a reference (using an AND)
+ to an unaligned location here.
+ * config/alpha/predicates.md (normal_memory_operand): Remove.
+
2015-05-18 Alex Velenko <Alex.Velenko@arm.com>
* config/arm/arm.md (andsi_not_shiftsi_si_scc): New pattern.
(match_test "op == CONST0_RTX (mode)")))
;; "Extra" constraints.
-(define_constraint "Q"
+
+;; A memory location that is not a reference
+;; (using an AND) to an unaligned location.
+(define_memory_constraint "Q"
"@internal A normal_memory_operand"
- (match_operand 0 "normal_memory_operand"))
+ (and (match_code "mem")
+ (not (match_test "GET_CODE (XEXP (op, 0)) == AND"))))
(define_constraint "R"
"@internal A direct_call_operand"
return false;
})
-;; Return 1 is OP is a memory location that is not a reference
-;; (using an AND) to an unaligned location. Take into account
-;; what reload will do.
-(define_special_predicate "normal_memory_operand"
- (ior (match_test "op = resolve_reload_operand (op), 0")
- (and (match_code "mem")
- (match_test "GET_CODE (XEXP (op, 0)) != AND"))))
-
;; Returns 1 if OP is not an eliminable register.
;;
;; This exists to cure a pathological failure in the s8addq (et al) patterns,