ipa-visibility.c (can_replace_by_local_alias): Make static, check ASM_OUTPUT_DEF.
* ipa-visibility.c (can_replace_by_local_alias): Make static, check ASM_OUTPUT_DEF. (can_replace_by_local_alias_in_vtable): Make static. (function_and_variable_visibility): Reformat overlong comment. From-SVN: r231721
This commit is contained in:
parent
60b5526fd6
commit
f95ff97f09
2 changed files with 19 additions and 7 deletions
|
@ -1,3 +1,10 @@
|
|||
2015-12-16 Nathan Sidwell <nathan@acm.org>
|
||||
|
||||
* ipa-visibility.c (can_replace_by_local_alias): Make static,
|
||||
check ASM_OUTPUT_DEF.
|
||||
(can_replace_by_local_alias_in_vtable): Make static.
|
||||
(function_and_variable_visibility): Reformat overlong comment.
|
||||
|
||||
2015-12-16 Jeff Law <law@redhat.com>
|
||||
|
||||
* ree.c (add_removable_extension): Use reg_overlap_mentioned_p
|
||||
|
|
|
@ -329,9 +329,13 @@ varpool_node::externally_visible_p (void)
|
|||
Local aliases save dynamic linking overhead and enable more optimizations.
|
||||
*/
|
||||
|
||||
bool
|
||||
static bool
|
||||
can_replace_by_local_alias (symtab_node *node)
|
||||
{
|
||||
#ifndef ASM_OUTPUT_DEF
|
||||
/* If aliases aren't supported, we can't do replacement. */
|
||||
return false;
|
||||
#endif
|
||||
/* Weakrefs have a reason to be non-local. Be sure we do not replace
|
||||
them. */
|
||||
while (node->transparent_alias && node->definition && !node->weakref)
|
||||
|
@ -344,11 +348,11 @@ can_replace_by_local_alias (symtab_node *node)
|
|||
&& !node->can_be_discarded_p ());
|
||||
}
|
||||
|
||||
/* Return true if we can replace refernece to NODE by local alias
|
||||
/* Return true if we can replace reference to NODE by local alias
|
||||
within a virtual table. Generally we can replace function pointers
|
||||
and virtual table pointers. */
|
||||
|
||||
bool
|
||||
static bool
|
||||
can_replace_by_local_alias_in_vtable (symtab_node *node)
|
||||
{
|
||||
if (is_a <varpool_node *> (node)
|
||||
|
@ -592,10 +596,11 @@ function_and_variable_visibility (bool whole_program)
|
|||
if (!node->local.local)
|
||||
node->local.local |= node->local_p ();
|
||||
|
||||
/* If we know that function can not be overwritten by a different semantics
|
||||
and moreover its section can not be discarded, replace all direct calls
|
||||
by calls to an noninterposable alias. This make dynamic linking
|
||||
cheaper and enable more optimization.
|
||||
/* If we know that function can not be overwritten by a
|
||||
different semantics and moreover its section can not be
|
||||
discarded, replace all direct calls by calls to an
|
||||
noninterposable alias. This make dynamic linking cheaper and
|
||||
enable more optimization.
|
||||
|
||||
TODO: We can also update virtual tables. */
|
||||
if (node->callers
|
||||
|
|
Loading…
Add table
Reference in a new issue