Commit 0ff5fade by Richard Henderson Committed by Richard Henderson

re PR middle-end/65074 (r220674 broke C++ PIEs)

PR middle-end/65074

 * varasm.c (default_binds_local_p_2): Don't test node->definition;
 test DECL_EXTERNAL independent of symtab_node.

From-SVN: r220816
parent 97953c11
2015-02-19 Richard Henderson <rth@redhat.com>
PR middle-end/65074
* varasm.c (default_binds_local_p_2): Don't test node->definition;
test DECL_EXTERNAL independent of symtab_node.
2015-02-19 Jakub Jelinek <jakub@redhat.com> 2015-02-19 Jakub Jelinek <jakub@redhat.com>
PR lto/65012 PR lto/65012
......
...@@ -6828,20 +6828,18 @@ default_binds_local_p_2 (const_tree exp, bool shlib, bool weak_dominate) ...@@ -6828,20 +6828,18 @@ default_binds_local_p_2 (const_tree exp, bool shlib, bool weak_dominate)
because dynamic linking might overwrite symbols because dynamic linking might overwrite symbols
in shared libraries. */ in shared libraries. */
bool resolved_locally = false; bool resolved_locally = false;
bool defined_locally = false; bool defined_locally = !DECL_EXTERNAL (exp);
if (symtab_node *node = symtab_node::get (exp)) if (symtab_node *node = symtab_node::get (exp))
{ {
if ((node->definition && !DECL_EXTERNAL (node->decl)) if (node->in_other_partition)
|| node->in_other_partition) defined_locally = true;
{
defined_locally = true;
resolved_locally = (weak_dominate && !shlib);
}
if (resolution_to_local_definition_p (node->resolution)) if (resolution_to_local_definition_p (node->resolution))
defined_locally = resolved_locally = true; defined_locally = resolved_locally = true;
else if (resolution_local_p (node->resolution)) else if (resolution_local_p (node->resolution))
resolved_locally = true; resolved_locally = true;
} }
if (defined_locally && weak_dominate && !shlib)
resolved_locally = true;
/* Undefined weak symbols are never defined locally. */ /* Undefined weak symbols are never defined locally. */
if (DECL_WEAK (exp) && !defined_locally) if (DECL_WEAK (exp) && !defined_locally)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment