From 9e81685aef368a10401bccb0a0adbed480be9eb1 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 25 Jul 2000 21:32:13 +0200 Subject: [PATCH] i386.md (call_pop): Check operands[0], not operands[1]. * 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. From-SVN: r35248 --- gcc/ChangeLog | 8 ++++++++ gcc/config/i386/i386.md | 16 ++++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8c767e1f84ef..c6d6a4048511 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2000-07-25 Jakub Jelinek + + * 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. + 2000-07-25 Zack Weinberg * toplev.c (pipe_closed): Delete. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index ab2f894f7497..538ebe7444f1 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)); -- 2.43.5