aboutsummaryrefslogtreecommitdiff
path: root/gcc/varpool.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2011-10-19 12:27:50 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2011-10-19 10:27:50 +0000
commitc9552bff091dae74d992b04fde8050e892761dae (patch)
tree4656b89b69afb0c42224eaeeaa3e0c4e8a753185 /gcc/varpool.c
parent091751993553dae197bfda9230f15d9cb9dd86df (diff)
downloadgcc-c9552bff091dae74d992b04fde8050e892761dae.zip
gcc-c9552bff091dae74d992b04fde8050e892761dae.tar.gz
gcc-c9552bff091dae74d992b04fde8050e892761dae.tar.bz2
cgraphunit.c (handle_alias_pairs): Also handle wekref with destination declared.
* cgraphunit.c (handle_alias_pairs): Also handle wekref with destination declared. (output_weakrefs): New function. * varpool.c (varpool_create_variable_alias): Handle external aliases. From-SVN: r180181
Diffstat (limited to 'gcc/varpool.c')
-rw-r--r--gcc/varpool.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/varpool.c b/gcc/varpool.c
index d223779..e342a91 100644
--- a/gcc/varpool.c
+++ b/gcc/varpool.c
@@ -703,9 +703,11 @@ varpool_create_variable_alias (tree alias, tree decl)
gcc_assert (TREE_CODE (alias) == VAR_DECL);
alias_node = varpool_node (alias);
alias_node->alias = 1;
- alias_node->finalized = 1;
+ if (!DECL_EXTERNAL (alias))
+ alias_node->finalized = 1;
alias_node->alias_of = decl;
- if (decide_is_variable_needed (alias_node, alias)
+ if ((!DECL_EXTERNAL (alias)
+ && decide_is_variable_needed (alias_node, alias))
|| alias_node->needed)
varpool_mark_needed_node (alias_node);
return alias_node;