aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorKai Tietz <ktietz@redhat.com>2014-06-01 12:36:55 +0200
committerKai Tietz <ktietz@gcc.gnu.org>2014-06-01 12:36:55 +0200
commit6041d142c48fc03e72d132a29439121e7978e4f3 (patch)
tree7477949fe5340896723a29dcb3714883d5f1ee85 /gcc
parent4a065d4a62be519ba75eeee71ae36e9b18c52188 (diff)
downloadgcc-6041d142c48fc03e72d132a29439121e7978e4f3.zip
gcc-6041d142c48fc03e72d132a29439121e7978e4f3.tar.gz
gcc-6041d142c48fc03e72d132a29439121e7978e4f3.tar.bz2
re PR target/61377 (Bootstrap failure on x86_64-apple-darwin13)
PR target/61377 * constrains.md (define_constrain): New 'Bs' constraint. * i386.md (sibcall_insn_operand): Use Bs instead of m constraint. From-SVN: r211112
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/constraints.md10
-rw-r--r--gcc/config/i386/i386.md8
3 files changed, 19 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 60ef5c6..29ce4be 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-06-01 Kai Tietz <ktietz@redhat.com>
+
+ PR target/61377
+ * constrains.md (define_constrain): New 'Bs' constraint.
+ * i386.md (sibcall_insn_operand): Use Bs instead of m constraint.
+
2014-05-31 Andreas Schwab <schwab@linux-m68k.org>
* config/m68k/m68k.md (beq0_di, bne0_di): Make the "o" constraint
diff --git a/gcc/config/i386/constraints.md b/gcc/config/i386/constraints.md
index 567e705..b142c19 100644
--- a/gcc/config/i386/constraints.md
+++ b/gcc/config/i386/constraints.md
@@ -18,7 +18,7 @@
;; <http://www.gnu.org/licenses/>.
;;; Unused letters:
-;;; B H
+;;; H
;;; h j
;; Integer register constraints.
@@ -144,6 +144,14 @@
"(ix86_fpmath & FPMATH_387) ? FLOAT_REGS : NO_REGS"
"@internal Any x87 register when 80387 FP arithmetic is enabled.")
+;; We use the B prefix to denote any number of internal memory operands:
+;; s Sibling memory operand.
+
+(define_constraint "Bs"
+ "@internal Sibcall memory operand."
+ (and (not (match_test "TARGET_X32"))
+ (match_operand 0 "sibcall_memory_operand")))
+
(define_register_constraint "v" "TARGET_SSE ? ALL_SSE_REGS : NO_REGS"
"Any EVEX encodable SSE register (@code{%xmm0-%xmm31}).")
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 8d363bd..6fc69ff 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -11376,7 +11376,7 @@
[(set_attr "type" "call")])
(define_insn "*sibcall"
- [(call (mem:QI (match_operand:W 0 "sibcall_insn_operand" "Uzm"))
+ [(call (mem:QI (match_operand:W 0 "sibcall_insn_operand" "UzBs"))
(match_operand 1))]
"SIBLING_CALL_P (insn)"
"* return ix86_output_call_insn (insn, operands[0]);"
@@ -11406,7 +11406,7 @@
[(set_attr "type" "call")])
(define_insn "*sibcall_pop"
- [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "Uzm"))
+ [(call (mem:QI (match_operand:SI 0 "sibcall_insn_operand" "UzBs"))
(match_operand 1))
(set (reg:SI SP_REG)
(plus:SI (reg:SI SP_REG)
@@ -11451,7 +11451,7 @@
(define_insn "*sibcall_value"
[(set (match_operand 0)
- (call (mem:QI (match_operand:W 1 "sibcall_insn_operand" "Uzm"))
+ (call (mem:QI (match_operand:W 1 "sibcall_insn_operand" "UzBs"))
(match_operand 2)))]
"SIBLING_CALL_P (insn)"
"* return ix86_output_call_insn (insn, operands[1]);"
@@ -11494,7 +11494,7 @@
(define_insn "*sibcall_value_pop"
[(set (match_operand 0)
- (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "Uzm"))
+ (call (mem:QI (match_operand:SI 1 "sibcall_insn_operand" "UzBs"))
(match_operand 2)))
(set (reg:SI SP_REG)
(plus:SI (reg:SI SP_REG)