aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.md
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-08-29 00:51:21 +0000
committerRichard Henderson <rth@cygnus.com>2000-08-29 00:51:21 +0000
commitb0b08df717b1059d08043bd2a90f9ef1da0d717a (patch)
tree8f525e55c0a3ddb2de3321636646544d9b0e18b6 /gcc/config/i386/i386.md
parent668d3fa68ecef4054ff7b45346d7cff2dddaabeb (diff)
* config/i386/i386.c: Don't error on EXTRA_CONSTRAINT defined.
(call_insn_operand): Don't expect a surrounding mem. (constant_call_address_operand): Likewise. * config/i386/i386.h (PREDICATE_CODES): Update. * config/i386/i386.md (call patterns): Move the match_operand for the call destination inside the mem. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@36024 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r--gcc/config/i386/i386.md30
1 files changed, 13 insertions, 17 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 7d4faf347cb..c377978a5c4 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -8457,12 +8457,12 @@
&& (GET_CODE (XEXP (operands[0], 0)) != SYMBOL_REF
|| !SYMBOL_REF_FLAG (XEXP (operands[0], 0))))
current_function_uses_pic_offset_table = 1;
- if (! call_insn_operand (operands[0], QImode))
+ if (! call_insn_operand (XEXP (operands[0], 0), Pmode))
XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
}")
(define_insn "*call_pop_0"
- [(call (match_operand:QI 0 "constant_call_address_operand" "")
+ [(call (mem:QI (match_operand:SI 0 "constant_call_address_operand" ""))
(match_operand:SI 1 "" ""))
(set (reg:SI 7) (plus:SI (reg:SI 7)
(match_operand:SI 3 "immediate_operand" "")))]
@@ -8477,21 +8477,20 @@
[(set_attr "type" "call")])
(define_insn "*call_pop_1"
- [(call (match_operand:QI 0 "call_insn_operand" "m")
+ [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "rsm"))
(match_operand:SI 1 "" ""))
(set (reg:SI 7) (plus:SI (reg:SI 7)
(match_operand:SI 3 "immediate_operand" "i")))]
""
"*
{
- if (constant_call_address_operand (operands[0], QImode))
+ if (constant_call_address_operand (operands[0], Pmode))
{
if (SIBLING_CALL_P (insn))
return \"jmp\\t%P0\";
else
return \"call\\t%P0\";
}
- operands[0] = XEXP (operands[0], 0);
if (SIBLING_CALL_P (insn))
return \"jmp\\t%*%0\";
else
@@ -8513,12 +8512,12 @@
&& (GET_CODE (XEXP (operands[0], 0)) != SYMBOL_REF
|| !SYMBOL_REF_FLAG (XEXP (operands[0], 0))))
current_function_uses_pic_offset_table = 1;
- if (! call_insn_operand (operands[0], QImode))
+ if (! call_insn_operand (XEXP (operands[0], 0), Pmode))
XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
}")
(define_insn "*call_0"
- [(call (match_operand:QI 0 "constant_call_address_operand" "")
+ [(call (mem:QI (match_operand:SI 0 "constant_call_address_operand" ""))
(match_operand:SI 1 "" ""))]
""
"*
@@ -8531,7 +8530,7 @@
[(set_attr "type" "call")])
(define_insn "*call_1"
- [(call (match_operand:QI 0 "call_insn_operand" "m")
+ [(call (mem:QI (match_operand:SI 0 "call_insn_operand" "rsm"))
(match_operand:SI 1 "" ""))]
""
"*
@@ -8543,7 +8542,6 @@
else
return \"call\\t%P0\";
}
- operands[0] = XEXP (operands[0], 0);
if (SIBLING_CALL_P (insn))
return \"jmp\\t%*%0\";
else
@@ -8576,7 +8574,7 @@
&& (GET_CODE (XEXP (operands[1], 0)) != SYMBOL_REF
|| !SYMBOL_REF_FLAG (XEXP (operands[1], 0))))
current_function_uses_pic_offset_table = 1;
- if (! call_insn_operand (operands[1], QImode))
+ if (! call_insn_operand (XEXP (operands[1], 0), Pmode))
XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
}")
@@ -8595,7 +8593,7 @@
&& (GET_CODE (XEXP (operands[1], 0)) != SYMBOL_REF
|| !SYMBOL_REF_FLAG (XEXP (operands[1], 0))))
current_function_uses_pic_offset_table = 1;
- if (! call_insn_operand (operands[1], QImode))
+ if (! call_insn_operand (XEXP (operands[1], 0), Pmode))
XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
}")
@@ -11056,7 +11054,7 @@
(define_insn "*call_value_pop_0"
[(set (match_operand 0 "" "")
- (call (match_operand:QI 1 "constant_call_address_operand" "")
+ (call (mem:QI (match_operand:SI 1 "constant_call_address_operand" ""))
(match_operand:SI 2 "" "")))
(set (reg:SI 7) (plus:SI (reg:SI 7)
(match_operand:SI 4 "immediate_operand" "")))]
@@ -11072,7 +11070,7 @@
(define_insn "*call_value_pop_1"
[(set (match_operand 0 "" "")
- (call (match_operand:QI 1 "call_insn_operand" "m")
+ (call (mem:QI (match_operand:SI 1 "call_insn_operand" "rsm"))
(match_operand:SI 2 "" "")))
(set (reg:SI 7) (plus:SI (reg:SI 7)
(match_operand:SI 4 "immediate_operand" "i")))]
@@ -11086,7 +11084,6 @@
else
return \"call\\t%P1\";
}
- operands[1] = XEXP (operands[1], 0);
if (SIBLING_CALL_P (insn))
return \"jmp\\t%*%1\";
else
@@ -11096,7 +11093,7 @@
(define_insn "*call_value_0"
[(set (match_operand 0 "" "")
- (call (match_operand:QI 1 "constant_call_address_operand" "")
+ (call (mem:QI (match_operand:SI 1 "constant_call_address_operand" ""))
(match_operand:SI 2 "" "")))]
""
"*
@@ -11110,7 +11107,7 @@
(define_insn "*call_value_1"
[(set (match_operand 0 "" "")
- (call (match_operand:QI 1 "call_insn_operand" "m")
+ (call (mem:QI (match_operand:SI 1 "call_insn_operand" "rsm"))
(match_operand:SI 2 "" "")))]
""
"*
@@ -11122,7 +11119,6 @@
else
return \"call\\t%P1\";
}
- operands[1] = XEXP (operands[1], 0);
if (SIBLING_CALL_P (insn))
return \"jmp\\t%*%1\";
else