aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2000-07-25 21:32:13 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2000-07-25 21:32:13 +0200
commit9e81685aef368a10401bccb0a0adbed480be9eb1 (patch)
tree236d0b7483f3bfaed98036ae8feffd5e2355400f
parenta7023245ceb1d6e7cae3235cabdc5daa81b1db5e (diff)
downloadgcc-9e81685aef368a10401bccb0a0adbed480be9eb1.zip
gcc-9e81685aef368a10401bccb0a0adbed480be9eb1.tar.gz
gcc-9e81685aef368a10401bccb0a0adbed480be9eb1.tar.bz2
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
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/i386/i386.md16
2 files changed, 18 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8c767e1..c6d6a40 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2000-07-25 Jakub Jelinek <jakub@redhat.com>
+
+ * 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 <zack@wolery.cumb.org>
* toplev.c (pipe_closed): Delete.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index ab2f894..538ebe7 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));