summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-06 08:32:49 +0000
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>2000-09-06 08:32:49 +0000
commit3dabb92f778521cdc4d1cfa61d00d0c34936734e (patch)
treeaeb914f0cef3236618ce5f88783d37728efff16b
parent64e8c384687aea59ef34d5ee87c45aad5cd80bb8 (diff)
downloadppe42-gcc-3dabb92f778521cdc4d1cfa61d00d0c34936734e.tar.gz
ppe42-gcc-3dabb92f778521cdc4d1cfa61d00d0c34936734e.zip
* config/i386/i386.md (call_pop): Fix test for setting
current_function_uses_pic_offset_table. (call, call_value_pop, call_value): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36187 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.h3
-rw-r--r--gcc/config/i386/i386.md20
3 files changed, 16 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ee72cc1ccfe..e8a99251c46 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2000-09-06 Richard Henderson <rth@cygnus.com>
+
+ * config/i386/i386.md (call_pop): Fix test for setting
+ current_function_uses_pic_offset_table.
+ (call, call_value_pop, call_value): Likewise.
+
2000-09-06 Zack Weinberg <zack@wolery.cumb.org>
* timevar.c (timevar_add): Delete.
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index e32a16822ca..015da07aa75 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -1324,7 +1324,8 @@ typedef struct ix86_args {
If we are returning floats on the register stack, we cannot make
sibling calls to functions that return floats. (The stack adjust
instruction will wind up after the sibcall jump, and not be executed.) */
-#define FUNCTION_OK_FOR_SIBCALL(DECL) (DECL \
+#define FUNCTION_OK_FOR_SIBCALL(DECL) \
+ (DECL \
&& (! flag_pic || ! TREE_PUBLIC (DECL)) \
&& (! TARGET_FLOAT_RETURNS_IN_80387 \
|| ! FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (TREE_TYPE (DECL)))) \
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 1fd1a9b6bf5..72fd72088c0 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -8453,9 +8453,8 @@
/* Static functions and indirect calls don't need
current_function_uses_pic_offset_table. */
if (flag_pic
- && constant_call_address_operand (operands[0], SImode)
- && (GET_CODE (XEXP (operands[0], 0)) != SYMBOL_REF
- || !SYMBOL_REF_FLAG (XEXP (operands[0], 0))))
+ && 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 (XEXP (operands[0], 0), Pmode))
XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
@@ -8508,9 +8507,8 @@
/* Static functions and indirect calls don't need
current_function_uses_pic_offset_table. */
if (flag_pic
- && constant_call_address_operand (operands[0], SImode)
- && (GET_CODE (XEXP (operands[0], 0)) != SYMBOL_REF
- || !SYMBOL_REF_FLAG (XEXP (operands[0], 0))))
+ && 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 (XEXP (operands[0], 0), Pmode))
XEXP (operands[0], 0) = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
@@ -8570,9 +8568,8 @@
/* Static functions and indirect calls don't need
current_function_uses_pic_offset_table. */
if (flag_pic
- && constant_call_address_operand (operands[1], SImode)
- && (GET_CODE (XEXP (operands[1], 0)) != SYMBOL_REF
- || !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 (XEXP (operands[1], 0), Pmode))
XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
@@ -8589,9 +8586,8 @@
/* Static functions and indirect calls don't need
current_function_uses_pic_offset_table. */
if (flag_pic
- && constant_call_address_operand (operands[1], SImode)
- && (GET_CODE (XEXP (operands[1], 0)) != SYMBOL_REF
- || !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 (XEXP (operands[1], 0), Pmode))
XEXP (operands[1], 0) = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
OpenPOWER on IntegriCloud