i386.md (call_pop): Fix test for setting current_function_uses_pic_offset_table.
authorRichard Henderson <rth@cygnus.com>
Wed, 6 Sep 2000 08:32:49 +0000 (01:32 -0700)
committerRichard Henderson <rth@gcc.gnu.org>
Wed, 6 Sep 2000 08:32:49 +0000 (01:32 -0700)
        * 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

gcc/ChangeLog
gcc/config/i386/i386.h
gcc/config/i386/i386.md

index ee72cc1ccfe98ca9b687228e32d088c991ce6fb7..e8a99251c46743a475d9494ae7ee4b5a167c9757 100644 (file)
@@ -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.
index e32a16822ca4bdba2fd5b96d667742725236698f..015da07aa7556b11f369eb8f185bd6532033fcbc 100644 (file)
@@ -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)))) \
index 1fd1a9b6bf58ac1b12ab053e3576ceb9e91785d0..72fd72088c0db545f7e433aaf25f0a3f6b6ad959 100644 (file)
   /* 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));
   /* 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));
   /* 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));
   /* 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));