symtab.c (symtab_node::equal_address_to): Return -1 instead of 2 if we can't determine address equivalence.

* symtab.c (symtab_node::equal_address_to): Return -1 instead of 2
	if we can't determine address equivalence.
	* alias.c (compare_base_decl): Update for changed return value of
	symtab_node::equal_address_to.

From-SVN: r232172
This commit is contained in:
Uros Bizjak 2016-01-08 17:13:18 +01:00 committed by Uros Bizjak
parent 550c5f8a7e
commit 5c07bed61d
3 changed files with 11 additions and 6 deletions

View File

@ -1,3 +1,10 @@
2016-01-08 Uros Bizjak <ubizjak@gmail.com>
* symtab.c (symtab_node::equal_address_to): Return -1 instead of 2
if we can't determine address equivalence.
* alias.c (compare_base_decl): Update for changed return value of
symtab_node::equal_address_to.
2016-01-08 Jason Merrill <jason@redhat.com>
PR c++/68983

View File

@ -2053,8 +2053,6 @@ compare_base_decls (tree base1, tree base2)
return 0;
ret = node1->equal_address_to (node2, true);
if (ret == 2)
return -1;
return ret;
}

View File

@ -1877,7 +1877,7 @@ symtab_node::nonzero_address ()
/* Return 0 if symbol is known to have different address than S2,
Return 1 if symbol is known to have same address as S2,
return 2 otherwise.
return -1 otherwise.
If MEMORY_ACCESSED is true, assume that both memory pointer to THIS
and S2 is going to be accessed. This eliminates the situations when
@ -1941,7 +1941,7 @@ symtab_node::equal_address_to (symtab_node *s2, bool memory_accessed)
/* If both symbols may resolve to NULL, we can not really prove them
different. */
if (!memory_accessed && !nonzero_address () && !s2->nonzero_address ())
return 2;
return -1;
/* Except for NULL, functions and variables never overlap. */
if (TREE_CODE (decl) != TREE_CODE (s2->decl))
@ -1949,7 +1949,7 @@ symtab_node::equal_address_to (symtab_node *s2, bool memory_accessed)
/* If one of the symbols is unresolved alias, punt. */
if (rs1->alias || rs2->alias)
return 2;
return -1;
/* If we have a non-interposale definition of at least one of the symbols
and the other symbol is different, we know other unit can not interpose
@ -1976,7 +1976,7 @@ symtab_node::equal_address_to (symtab_node *s2, bool memory_accessed)
We probably should be consistent and use this fact here, too, but for
the moment return false only when we are called from the alias oracle. */
return memory_accessed && rs1 != rs2 ? 0 : 2;
return memory_accessed && rs1 != rs2 ? 0 : -1;
}
/* Worker for call_for_symbol_and_aliases. */