diff options
author | Nathan Sidwell <nathan@acm.org> | 2015-12-16 21:05:39 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2015-12-16 21:05:39 +0000 |
commit | f95ff97f09eefe4ce1746b56c150d2c9562ce518 (patch) | |
tree | 6295e912a24f2f4ac3f5d8cee014b550e096a38d /gcc | |
parent | 60b5526fd649800826098a35cc33fbd530622592 (diff) | |
download | gcc-f95ff97f09eefe4ce1746b56c150d2c9562ce518.zip gcc-f95ff97f09eefe4ce1746b56c150d2c9562ce518.tar.gz gcc-f95ff97f09eefe4ce1746b56c150d2c9562ce518.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/ipa-visibility.c | 19 |
2 files changed, 19 insertions, 7 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8475b7..95e9656 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/ipa-visibility.c b/gcc/ipa-visibility.c index 7ce8266..4b48d6e 100644 --- a/gcc/ipa-visibility.c +++ b/gcc/ipa-visibility.c @@ -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 |