Commit 5c07bed6 by Uros Bizjak Committed by Uros Bizjak

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

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
parent 550c5f8a
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> 2016-01-08 Jason Merrill <jason@redhat.com>
PR c++/68983 PR c++/68983
......
...@@ -2053,8 +2053,6 @@ compare_base_decls (tree base1, tree base2) ...@@ -2053,8 +2053,6 @@ compare_base_decls (tree base1, tree base2)
return 0; return 0;
ret = node1->equal_address_to (node2, true); ret = node1->equal_address_to (node2, true);
if (ret == 2)
return -1;
return ret; return ret;
} }
......
...@@ -1877,7 +1877,7 @@ symtab_node::nonzero_address () ...@@ -1877,7 +1877,7 @@ symtab_node::nonzero_address ()
/* Return 0 if symbol is known to have different address than S2, /* 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 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 If MEMORY_ACCESSED is true, assume that both memory pointer to THIS
and S2 is going to be accessed. This eliminates the situations when 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) ...@@ -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 /* If both symbols may resolve to NULL, we can not really prove them
different. */ different. */
if (!memory_accessed && !nonzero_address () && !s2->nonzero_address ()) if (!memory_accessed && !nonzero_address () && !s2->nonzero_address ())
return 2; return -1;
/* Except for NULL, functions and variables never overlap. */ /* Except for NULL, functions and variables never overlap. */
if (TREE_CODE (decl) != TREE_CODE (s2->decl)) if (TREE_CODE (decl) != TREE_CODE (s2->decl))
...@@ -1949,7 +1949,7 @@ symtab_node::equal_address_to (symtab_node *s2, bool memory_accessed) ...@@ -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 one of the symbols is unresolved alias, punt. */
if (rs1->alias || rs2->alias) if (rs1->alias || rs2->alias)
return 2; return -1;
/* If we have a non-interposale definition of at least one of the symbols /* 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 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) ...@@ -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 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. */ 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. */ /* Worker for call_for_symbol_and_aliases. */
......
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