From: Uros Bizjak Date: Mon, 18 May 2015 16:34:23 +0000 (+0200) Subject: re PR rtl-optimization/57032 (internal compiler error: Max. number of generated reloa... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=6f2ac3606e151edde9980b1ae9735dbd68aa992b;p=gcc.git re PR rtl-optimization/57032 (internal compiler error: Max. number of generated reload insns per insn is achieved (90)) 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. Co-Authored-By: Richard Henderson From-SVN: r223298 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e82485baa5b..dd2c97fdf25 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2015-05-18 Uros Bizjak + Richard Henderson + + 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 * config/arm/arm.md (andsi_not_shiftsi_si_scc): New pattern. diff --git a/gcc/config/alpha/constraints.md b/gcc/config/alpha/constraints.md index ef7068248b0..f1e5333716b 100644 --- a/gcc/config/alpha/constraints.md +++ b/gcc/config/alpha/constraints.md @@ -91,9 +91,13 @@ (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" diff --git a/gcc/config/alpha/predicates.md b/gcc/config/alpha/predicates.md index 2a76710c4fc..51a378e18f2 100644 --- a/gcc/config/alpha/predicates.md +++ b/gcc/config/alpha/predicates.md @@ -525,14 +525,6 @@ 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,