diff options
author | Jakub Jelinek <jakub@redhat.com> | 2000-07-25 19:32:13 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2000-07-25 19:32:13 +0000 |
commit | 332b04fc56e905b6fdd51edb97aaf3364fe021c5 (patch) | |
tree | 236d0b7483f3bfaed98036ae8feffd5e2355400f /gcc/config/i386/i386.md | |
parent | bd8929e4950f21524eb527e2eca1b97ccdf69505 (diff) |
* config/i386/i386.md (call_pop): Check operands[0],
not operands[1]. Only check SYMBOL_REF_FLAG for a SYMBOL_REF.
(call): Likewise.
(call_value_pop): Only check SYMBOL_REF_FLAG for a SYMBOL_REF.
(call_value): Likewise.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@35248 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r-- | gcc/config/i386/i386.md | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index ab2f894f749..538ebe7444f 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -8203,8 +8203,9 @@ /* Static functions and indirect calls don't need current_function_uses_pic_offset_table. */ if (flag_pic - && constant_call_address_operand (operands[1], SImode) - && !SYMBOL_REF_FLAG (XEXP (operands[1], 0))) + && constant_call_address_operand (operands[0], SImode) + && (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)) XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0)); @@ -8258,8 +8259,9 @@ /* Static functions and indirect calls don't need current_function_uses_pic_offset_table. */ if (flag_pic - && constant_call_address_operand (operands[1], SImode) - && !SYMBOL_REF_FLAG (XEXP (operands[1], 0))) + && constant_call_address_operand (operands[0], SImode) + && (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)) XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0)); @@ -8321,7 +8323,8 @@ current_function_uses_pic_offset_table. */ if (flag_pic && constant_call_address_operand (operands[1], SImode) - && !SYMBOL_REF_FLAG (XEXP (operands[1], 0))) + && (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)) XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0)); @@ -8339,7 +8342,8 @@ current_function_uses_pic_offset_table. */ if (flag_pic && constant_call_address_operand (operands[1], SImode) - && !SYMBOL_REF_FLAG (XEXP (operands[1], 0))) + && (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)) XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0)); |