+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
/* 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)
{
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))));
}
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)
/* 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. */