* Transparent alias suport part 3 (lto-symtab fixes)
@ 2015-12-08 20:52 Jan Hubicka
0 siblings, 0 replies; only message in thread
From: Jan Hubicka @ 2015-12-08 20:52 UTC (permalink / raw)
To: gcc-patches
Hi,
this patch fixes and ICE in symtab_node::verify_base when there is a missing
entry in the symol table - bug I noticed while debugging the patch.
Second fix makes symtab_node::noninterposable_alias to skip all transaprent
aliases because these can not change visibility. (this is needed because the
way we represent weakrefs as a static variable while it really inherits visibility
of its target that may be unknown)
Bootstrapped/regtested x86_64-linux, will commit it shortly.
* symtab.c (symtab_node::verify_base): Fix thinko in a conditional.
(symtab_node::noninterposable_alias): Do not accept transparent
aliases.
Index: symtab.c
===================================================================
--- symtab.c (revision 231425)
+++ symtab.c (working copy)
@@ -1005,7 +1005,7 @@ symtab_node::verify_base (void)
}
if (!hashed_node
&& !(is_a <varpool_node *> (this)
- || DECL_HARD_REGISTER (decl)))
+ && DECL_HARD_REGISTER (decl)))
{
error ("node not found in symtab assembler name hash");
error_found = true;
@@ -1637,7 +1637,7 @@ symtab_node::resolve_alias (symtab_node
bool
symtab_node::noninterposable_alias (symtab_node *node, void *data)
{
- if (decl_binds_to_current_def_p (node->decl))
+ if (!node->transparent_alias && decl_binds_to_current_def_p (node->decl))
{
symtab_node *fn = node->ultimate_alias_target ();
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2015-12-08 20:52 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-08 20:52 Transparent alias suport part 3 (lto-symtab fixes) Jan Hubicka
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).