From 236261548b57ca45c29735e29708976525ddb9a5 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 14 Aug 2002 17:07:55 -0700 Subject: [PATCH] calls.c: Include target.h. * calls.c: Include target.h. * Makefile.in (calls.o): Update. * config/alpha/alpha.c (alpha_end_function): Use targetm.binds_local_p. * config/alpha/alpha.h (FUNCTION_OK_FOR_SIBCALL): Likewise. From-SVN: r56335 --- gcc/ChangeLog | 8 ++++++++ gcc/Makefile.in | 2 +- gcc/calls.c | 1 + gcc/config/alpha/alpha.c | 14 +++++--------- gcc/config/alpha/alpha.h | 7 +++---- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eb1f21717e3..145f869ad16 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2002-08-14 Richard Henderson + + * calls.c: Include target.h. + * Makefile.in (calls.o): Update. + + * config/alpha/alpha.c (alpha_end_function): Use targetm.binds_local_p. + * config/alpha/alpha.h (FUNCTION_OK_FOR_SIBCALL): Likewise. + 2002-08-14 Richard Henderson * Makefile.in (LOOSE_WARN): Add -fno-common. diff --git a/gcc/Makefile.in b/gcc/Makefile.in index 798426d11be..e7364954a60 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -1440,7 +1440,7 @@ builtins.o : builtins.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ $(RECOG_H) output.h typeclass.h hard-reg-set.h toplev.h hard-reg-set.h \ except.h $(TM_P_H) $(PREDICT_H) libfuncs.h real.h langhooks.h calls.o : calls.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ - $(EXPR_H) langhooks.h \ + $(EXPR_H) langhooks.h $(TARGET_H) \ libfuncs.h $(REGS_H) toplev.h output.h function.h $(TIMEVAR_H) $(TM_P_H) expmed.o : expmed.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \ insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) real.h \ diff --git a/gcc/calls.c b/gcc/calls.c index 144d7b1188b..5979747a68b 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -34,6 +34,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "timevar.h" #include "sbitmap.h" #include "langhooks.h" +#include "target.h" #if !defined FUNCTION_OK_FOR_SIBCALL #define FUNCTION_OK_FOR_SIBCALL(DECL) 1 diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 9b6f02669e5..99dee6bae6b 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -7736,7 +7736,7 @@ void alpha_end_function (file, fnname, decl) FILE *file; const char *fnname; - tree decl ATTRIBUTE_UNUSED; + tree decl; { /* End the function. */ if (!TARGET_ABI_UNICOSMK && !flag_inhibit_size_directive) @@ -7747,20 +7747,16 @@ alpha_end_function (file, fnname, decl) } inside_function = FALSE; - /* Show that we know this function if it is called again. + /* Show that we know this function if it is called again. - Don't do this for global functions in object files destined for a - shared library because the function may be overridden by the application - or other libraries. Similarly, don't do this for weak functions. + Do this only for functions whose symbols bind locally. Don't do this for functions not defined in the .text section, as otherwise it's not unlikely that the destination is out of range for a direct branch. */ - if (!DECL_WEAK (current_function_decl) - && (!flag_pic || !TREE_PUBLIC (current_function_decl)) - && decl_in_text_section (current_function_decl)) - SYMBOL_REF_FLAG (XEXP (DECL_RTL (current_function_decl), 0)) = 1; + if ((*targetm.binds_local_p) (decl) && decl_in_text_section (decl)) + SYMBOL_REF_FLAG (XEXP (DECL_RTL (decl), 0)) = 1; /* Output jump tables and the static subroutine information block. */ if (TARGET_ABI_UNICOSMK) diff --git a/gcc/config/alpha/alpha.h b/gcc/config/alpha/alpha.h index fa3294ae593..d90d47618a7 100644 --- a/gcc/config/alpha/alpha.h +++ b/gcc/config/alpha/alpha.h @@ -1158,12 +1158,11 @@ extern int alpha_memory_latency; /* We do not allow indirect calls to be optimized into sibling calls, nor can we allow a call to a function in a different compilation unit to - be optimized into a sibcall. Except if the function is known not to - return, in which case our caller doesn't care what the gp is. */ + be optimized into a sibcall. */ #define FUNCTION_OK_FOR_SIBCALL(DECL) \ (DECL \ - && ((TREE_ASM_WRITTEN (DECL) && !flag_pic) \ - || ! TREE_PUBLIC (DECL))) + && (! TREE_PUBLIC (DECL) \ + || (TREE_ASM_WRITTEN (DECL) && (*targetm.binds_local_p) (DECL)))) /* Try to output insns to set TARGET equal to the constant C if it can be done in less than N insns. Do all computations in MODE. Returns the place -- 2.30.2