Commit 6f2ac360 by Uros Bizjak Committed by Uros Bizjak

re PR rtl-optimization/57032 (internal compiler error: Max. number of generated…

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 <rth@redhat.com>

From-SVN: r223298
parent 323eb6e3
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> 2015-05-18 Alex Velenko <Alex.Velenko@arm.com>
* config/arm/arm.md (andsi_not_shiftsi_si_scc): New pattern. * config/arm/arm.md (andsi_not_shiftsi_si_scc): New pattern.
......
...@@ -91,9 +91,13 @@ ...@@ -91,9 +91,13 @@
(match_test "op == CONST0_RTX (mode)"))) (match_test "op == CONST0_RTX (mode)")))
;; "Extra" constraints. ;; "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" "@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" (define_constraint "R"
"@internal A direct_call_operand" "@internal A direct_call_operand"
......
...@@ -525,14 +525,6 @@ ...@@ -525,14 +525,6 @@
return false; 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. ;; Returns 1 if OP is not an eliminable register.
;; ;;
;; This exists to cure a pathological failure in the s8addq (et al) patterns, ;; This exists to cure a pathological failure in the s8addq (et al) patterns,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment