aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-12-06 13:26:09 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-12-06 13:26:09 +0000
commitf7fb28800dea7ac262424262b3ada1acd9bb8d07 (patch)
tree345ea4ddcc6a7538d7ce16b7722a60aa7d081fd9 /gcc/passes.c
parent52f26be4091ee44b2f6407d44c05c310917f2465 (diff)
downloadgcc-f7fb28800dea7ac262424262b3ada1acd9bb8d07.zip
gcc-f7fb28800dea7ac262424262b3ada1acd9bb8d07.tar.gz
gcc-f7fb28800dea7ac262424262b3ada1acd9bb8d07.tar.bz2
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
Diffstat (limited to 'gcc/passes.c')
-rw-r--r--gcc/passes.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/passes.c b/gcc/passes.c
index a351241..d060bb4 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -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);
}
}