re PR lto/50601 (New LTO failures)

2011-12-06  Richard Guenther  <rguenther@suse.de>

	PR middle-end/50601
	* varasm.c (assemble_alias): Move DECL_EXTERNAL implementation
	quirk adjustjment ...
	* passes.c (rest_of_decl_compilation): ... here.

From-SVN: r182048
This commit is contained in:
Richard Guenther 2011-12-06 13:26:09 +00:00 committed by Richard Biener
parent 52f26be409
commit f7fb28800d
3 changed files with 12 additions and 9 deletions

View File

@ -1,3 +1,10 @@
2011-12-06 Richard Guenther <rguenther@suse.de>
PR middle-end/50601
* varasm.c (assemble_alias): Move DECL_EXTERNAL implementation
quirk adjustjment ...
* passes.c (rest_of_decl_compilation): ... here.
2011-12-06 Richard Guenther <rguenther@suse.de>
PR middle-end/51436

View File

@ -156,6 +156,11 @@ rest_of_decl_compilation (tree decl,
{
alias = TREE_VALUE (TREE_VALUE (alias));
alias = get_identifier (TREE_STRING_POINTER (alias));
/* A quirk of the initial implementation of aliases required that the
user add "extern" to all of them. Which is silly, but now
historical. Do note that the symbol is in fact locally defined. */
if (!lookup_attribute ("weakref", DECL_ATTRIBUTES (decl)))
DECL_EXTERNAL (decl) = 0;
assemble_alias (decl, alias);
}
}

View File

@ -5794,14 +5794,11 @@ void
assemble_alias (tree decl, tree target)
{
tree target_decl;
bool is_weakref = false;
if (lookup_attribute ("weakref", DECL_ATTRIBUTES (decl)))
{
tree alias = DECL_ASSEMBLER_NAME (decl);
is_weakref = true;
ultimate_transparent_alias_target (&target);
if (alias == target)
@ -5839,12 +5836,6 @@ assemble_alias (tree decl, tree target)
}
TREE_USED (decl) = 1;
/* A quirk of the initial implementation of aliases required that the user
add "extern" to all of them. Which is silly, but now historical. Do
note that the symbol is in fact locally defined. */
if (! is_weakref)
DECL_EXTERNAL (decl) = 0;
/* Allow aliases to aliases. */
if (TREE_CODE (decl) == FUNCTION_DECL)
cgraph_get_create_node (decl)->alias = true;