]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
varasm.c (get_variable_section): Walk aliases.
authorJan Hubicka <hubicka@ucw.cz>
Thu, 29 May 2014 06:14:52 +0000 (08:14 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Thu, 29 May 2014 06:14:52 +0000 (06:14 +0000)
* varasm.c (get_variable_section): Walk aliases.
(place_block_symbol): Walk aliases.

From-SVN: r211045

gcc/ChangeLog
gcc/varasm.c

index 024e8d6ea6aed9fbefe6d28b60ab2148e279a087..2343f8d08d4de8103b79783cd7aee9ba3d965570 100644 (file)
@@ -1,3 +1,8 @@
+2014-05-28  Jan Hubicka  <hubicka@ucw.cz>
+
+       * varasm.c (get_variable_section): Walk aliases.
+       (place_block_symbol): Walk aliases.
+
 2014-05-28  Tom de Vries  <tom@codesourcery.com>
 
        Revert:
index d72d11e7bdc34f2c9fdd434cfe1106479938f999..7755717fe2792e5f91c461a734e941a37f723213 100644 (file)
@@ -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)