Commit 7ec4f343 by Nathan Sidwell Committed by Nathan Sidwell

alias.c (compare_base_decls): Simplify in-symtab check.

	gcc/
	* alias.c (compare_base_decls): Simplify in-symtab check.
	* cgraph.h (decl_in_symtab_p): Check DECL_IN_CONSTANT_POOL.

	testsuite/
	* gcc.dg/alias-15.c: New.

From-SVN: r231928
parent 986e29bc
2015-12-23 Nathan Sidwell <nathan@acm.org>
* alias.c (compare_base_decls): Simplify in-symtab check.
* cgraph.h (decl_in_symtab_p): Check DECL_IN_CONSTANT_POOL.
2015-12-23 Dominik Vogt <vogt@linux.vnet.ibm.com>
* config/s390/predicates.md ("larl_operand"): Remove now superfluous
......@@ -2038,13 +2038,12 @@ compare_base_decls (tree base1, tree base2)
if (base1 == base2)
return 1;
bool in_symtab1 = decl_in_symtab_p (base1);
bool in_symtab2 = decl_in_symtab_p (base2);
/* Declarations of non-automatic variables may have aliases. All other
decls are unique. */
if (in_symtab1 != in_symtab2 || !in_symtab1)
if (!decl_in_symtab_p (base1)
|| !decl_in_symtab_p (base2))
return 0;
ret = symtab_node::get_create (base1)->equal_address_to
(symtab_node::get_create (base2), true);
if (ret == 2)
......
......@@ -2294,13 +2294,19 @@ symtab_node::real_symbol_p (void)
}
/* Return true if DECL should have entry in symbol table if used.
Those are functions and static & external veriables*/
Those are functions and static & external non-constpool variables.
We do not expect constant pool variables in the varpool, as they're
not related to other variables, and simply lazily inserting them
using the regular interface results in varpool thinking they are
externally provided -- which results in erroneous assembly emission
as an undefined decl. */
static inline bool
decl_in_symtab_p (const_tree decl)
{
return (TREE_CODE (decl) == FUNCTION_DECL
|| (TREE_CODE (decl) == VAR_DECL
&& !DECL_IN_CONSTANT_POOL (decl)
&& (TREE_STATIC (decl) || DECL_EXTERNAL (decl))));
}
......
2015-12-23 Nathan Sidwell <nathan@acm.org>
* gcc.dg/alias-15.c: New.
2015-12-23 Thomas Schwinge <thomas@codesourcery.com>
* g++.dg/dg.exp (tests): Prune "goacc/*" and "goacc-gomp/*" files.
......
/* { dg-do compile } */
/* { dg-additional-options "-O2 -fdump-ipa-cgraph" } */
/* RTL-level CSE shouldn't introduce LCO (for the string) into varpool */
char *p;
void foo ()
{
p = "abc\n";
while (*p != '\n')
p++;
}
/* { dg-final { scan-ipa-dump-not "LC0" "cgraph" } } */
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