aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-09-06 01:32:49 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-09-06 01:32:49 -0700
commit2a4bbffab1e0bf165757e2897151c08275bfadd4 (patch)
treeaeb914f0cef3236618ce5f88783d37728efff16b
parent61f5be154a24fc20ac47337cc244104d374e7dac (diff)
downloadgcc-2a4bbffab1e0bf165757e2897151c08275bfadd4.zip
gcc-2a4bbffab1e0bf165757e2897151c08275bfadd4.tar.gz
gcc-2a4bbffab1e0bf165757e2897151c08275bfadd4.tar.bz2
i386.md (call_pop): Fix test for setting current_function_uses_pic_offset_table.
* config/i386/i386.md (call_pop): Fix test for setting current_function_uses_pic_offset_table. (call, call_value_pop, call_value): Likewise. From-SVN: r36187
-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 ee72cc1..e8a9925 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 e32a168..015da07 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 1fd1a9b..72fd720 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));