aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@acm.org>2015-12-16 21:05:39 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2015-12-16 21:05:39 +0000
commitf95ff97f09eefe4ce1746b56c150d2c9562ce518 (patch)
tree6295e912a24f2f4ac3f5d8cee014b550e096a38d /gcc
parent60b5526fd649800826098a35cc33fbd530622592 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/ipa-visibility.c19
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