diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2019-12-17 16:57:25 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2019-12-17 15:57:25 +0000 |
commit | 634c5bcafabedcd635e64e224973681ad2afc7b9 (patch) | |
tree | c2ca5712a829520daf1a99dc5c1988e2495ccb7b /gcc/symtab.c | |
parent | e24f6408df1e4c5e8c09785d7b488c492dfb68b3 (diff) |
symtab.c (symtab_node::get_partitioning_class): Aliases of external symbols are external.
* symtab.c (symtab_node::get_partitioning_class): Aliases of external
symbols are external.
From-SVN: r279464
Diffstat (limited to 'gcc/symtab.c')
-rw-r--r-- | gcc/symtab.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/symtab.c b/gcc/symtab.c index a88f45c4341..10b8ed1d178 100644 --- a/gcc/symtab.c +++ b/gcc/symtab.c @@ -1952,6 +1952,11 @@ symtab_node::get_partitioning_class (void) if (DECL_EXTERNAL (decl)) return SYMBOL_EXTERNAL; + /* Even static aliases of external functions as external. Those can happen + when COMDAT got resolved to non-IL implementation. */ + if (alias && DECL_EXTERNAL (ultimate_alias_target ()->decl)) + return SYMBOL_EXTERNAL; + if (varpool_node *vnode = dyn_cast <varpool_node *> (this)) { if (alias && definition && !ultimate_alias_target ()->definition) |