From: Jan Hubicka Date: Sun, 8 Jun 2014 16:53:25 +0000 (+0200) Subject: varasm.c (use_blocks_for_decl_p): Check symbol table instead of alias attribute. X-Git-Tag: releases/gcc-5.1.0~7017 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=684a3aa7ab4ab91bbd691fd471cbd24184f3dbd3;p=thirdparty%2Fgcc.git varasm.c (use_blocks_for_decl_p): Check symbol table instead of alias attribute. * varasm.c (use_blocks_for_decl_p): Check symbol table instead of alias attribute. (place_block_symbol): Recurse on aliases. From-SVN: r211357 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c7767ed87c67..5e5a3c60fc7d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-06-07 Jan Hubicka + + * varasm.c (use_blocks_for_decl_p): Check symbol table instead of alias + attribute. + (place_block_symbol): Recurse on aliases. + 2014-06-07 Jan Hubicka * ipa-visibility.c: Include varasm.h diff --git a/gcc/varasm.c b/gcc/varasm.c index 375838ad9f5b..eabc06ff5f72 100644 --- a/gcc/varasm.c +++ b/gcc/varasm.c @@ -1184,6 +1184,8 @@ change_symbol_block (rtx symbol, struct object_block *block) static bool use_blocks_for_decl_p (tree decl) { + struct symtab_node *snode; + /* Only data DECLs can be placed into object blocks. */ if (TREE_CODE (decl) != VAR_DECL && TREE_CODE (decl) != CONST_DECL) return false; @@ -1197,7 +1199,9 @@ use_blocks_for_decl_p (tree decl) /* If this decl is an alias, then we don't want to emit a definition. */ - if (lookup_attribute ("alias", DECL_ATTRIBUTES (decl))) + if (TREE_CODE (decl) == VAR_DECL + && (snode = symtab_get_node (decl)) != NULL + && snode->alias) return false; return targetm.use_blocks_for_decl_p (decl); @@ -7028,6 +7032,8 @@ place_block_symbol (rtx symbol) if (snode->alias) { rtx target = DECL_RTL (symtab_alias_ultimate_target (snode)->decl); + + place_block_symbol (target); SYMBOL_REF_BLOCK_OFFSET (symbol) = SYMBOL_REF_BLOCK_OFFSET (target); return; }