]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
rs6000.c (current_file_function_operand): Return zero for weak functions.
authorDaniel Jacobowitz <drow@false.org>
Thu, 5 Aug 1999 07:19:18 +0000 (07:19 +0000)
committerJeff Law <law@gcc.gnu.org>
Thu, 5 Aug 1999 07:19:18 +0000 (01:19 -0600)
        * rs6000.c (current_file_function_operand): Return zero for
        weak functions.
        (rs6000_encode_section_info): Do not set SYMBOL_REF_FLAG for
        weak symbols.
        * rs6000.h (ENCODE_SECTION_NIFO): Do not set SYMBOL_REF_FLAG
        for weak symbols.

From-SVN: r28528

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h

index 434222056cd43fe40e5725384a5069b5facbdf9f..f4fcb351e69ec6be66fd754553babf81fbfb2f92 100644 (file)
@@ -1,3 +1,12 @@
+Thu Aug  5 01:14:13 1999  Daniel Jacobowitz <drow@false.org>
+
+       * rs6000.c (current_file_function_operand): Return zero for
+       weak functions.
+       (rs6000_encode_section_info): Do not set SYMBOL_REF_FLAG for
+       weak symbols.
+       * rs6000.h (ENCODE_SECTION_NIFO): Do not set SYMBOL_REF_FLAG
+       for weak symbols.
+
 Thu Aug  5 00:56:30 1999  Geoffrey Keating   <geoffk@cygnus.com>
 
        * rs6000.c (rs6000_stack_info): For ABI_V4/ABI_SOLARIS -fpic, always
index 5ec6fa44ffe5178b0e1f4b29976feaf94d853bb2..dce69a5232c7e8159fc94ffe92fca4b14669d93b 100644 (file)
@@ -1109,7 +1109,7 @@ call_operand (op, mode)
 
 
 /* Return 1 if the operand is a SYMBOL_REF for a function known to be in
-   this file */
+   this file and the function is not weakly defined. */
 
 int
 current_file_function_operand (op, mode)
@@ -1118,7 +1118,8 @@ current_file_function_operand (op, mode)
 {
   return (GET_CODE (op) == SYMBOL_REF
          && (SYMBOL_REF_FLAG (op)
-             || op == XEXP (DECL_RTL (current_function_decl), 0)));
+             || (op == XEXP (DECL_RTL (current_function_decl), 0)
+                 && !DECL_WEAK (current_function_decl))));
 }
 
 
@@ -5644,7 +5645,8 @@ rs6000_encode_section_info (decl)
   if (TREE_CODE (decl) == FUNCTION_DECL)
     {
       rtx sym_ref = XEXP (DECL_RTL (decl), 0);
-      if (TREE_ASM_WRITTEN (decl) || ! TREE_PUBLIC (decl))
+      if ((TREE_ASM_WRITTEN (decl) || ! TREE_PUBLIC (decl))
+          && !DECL_WEAK (decl))
        SYMBOL_REF_FLAG (sym_ref) = 1;
 
       if (DEFAULT_ABI == ABI_AIX || DEFAULT_ABI == ABI_NT)
index c9634451bf4e13836447eef590466486be639e29..ab6e5554cba73461723873a602ed26908336bc75 100644 (file)
@@ -2529,11 +2529,12 @@ extern int rs6000_trunc_used;
 /* If we are referencing a function that is static or is known to be
    in this file, make the SYMBOL_REF special.  We can use this to indicate
    that we can branch to this function without emitting a no-op after the
-   call.  */
+   call.  Do not set this flag if the function is weakly defined. */
 
 #define ENCODE_SECTION_INFO(DECL)  \
   if (TREE_CODE (DECL) == FUNCTION_DECL                        \
-      && (TREE_ASM_WRITTEN (DECL) || ! TREE_PUBLIC (DECL))) \
+      && (TREE_ASM_WRITTEN (DECL) || ! TREE_PUBLIC (DECL)) \
+      && !DECL_WEAK (DECL)) \
     SYMBOL_REF_FLAG (XEXP (DECL_RTL (DECL), 0)) = 1;
 
 /* Indicate that jump tables go in the text section.  */