From 1a344a3feb0312e6bf51cc666449168f28317780 Mon Sep 17 00:00:00 2001 From: hubicka Date: Thu, 29 May 2014 06:14:52 +0000 Subject: [PATCH] * varasm.c (get_variable_section): Walk aliases. (place_block_symbol): Walk aliases. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211045 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/varasm.c | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 024e8d6..2343f8d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2014-05-28 Jan Hubicka + + * varasm.c (get_variable_section): Walk aliases. + (place_block_symbol): Walk aliases. + 2014-05-28 Tom de Vries Revert: diff --git a/gcc/varasm.c b/gcc/varasm.c index d72d11e..7755717 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1083,6 +1083,9 @@ get_variable_section (tree decl, bool prefer_noswitch_p) { addr_space_t as = ADDR_SPACE_GENERIC; int reloc; + symtab_node *snode = symtab_get_node (decl); + if (snode) + decl = symtab_alias_ultimate_target (snode)->decl; if (TREE_TYPE (decl) != error_mark_node) as = TYPE_ADDR_SPACE (TREE_TYPE (decl)); @@ -7084,7 +7087,16 @@ place_block_symbol (rtx symbol) } else { + struct symtab_node *snode; decl = SYMBOL_REF_DECL (symbol); + + snode = symtab_get_node (decl); + if (snode->alias) + { + rtx target = DECL_RTL (symtab_alias_ultimate_target (snode)->decl); + SYMBOL_REF_BLOCK_OFFSET (symbol) = SYMBOL_REF_BLOCK_OFFSET (target); + return; + } alignment = get_variable_align (decl); size = tree_to_uhwi (DECL_SIZE_UNIT (decl)); if ((flag_sanitize & SANITIZE_ADDRESS) -- 2.7.4