aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2019-12-17 16:57:25 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2019-12-17 15:57:25 +0000
commit634c5bcafabedcd635e64e224973681ad2afc7b9 (patch)
treec2ca5712a829520daf1a99dc5c1988e2495ccb7b /gcc
parente24f6408df1e4c5e8c09785d7b488c492dfb68b3 (diff)
downloadgcc-634c5bcafabedcd635e64e224973681ad2afc7b9.zip
gcc-634c5bcafabedcd635e64e224973681ad2afc7b9.tar.gz
gcc-634c5bcafabedcd635e64e224973681ad2afc7b9.tar.bz2
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')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/symtab.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1be2ae9..e5702ae 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2019-12-17 Jan Hubicka <hubicka@ucw.cz>
+
+ * symtab.c (symtab_node::get_partitioning_class): Aliases of external
+ symbols are external.
+
2019-12-17 Christophe Lyon <christophe.lyon@linaro.org>
* config/arm/arm-protos.h (thumb1_gen_const_int): Add new prototype.
diff --git a/gcc/symtab.c b/gcc/symtab.c
index a88f45c..10b8ed1 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)