Hello! This patch includes part of [1] that trivially renumbers a return value, so the follow-up part of a patch that fixes aliasing issues can be much smaller and more focused.
2016-01-08 Uros Bizjak <ubiz...@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. Bootstrapped and regression tested on alpha-linux-gnu. OK for mainline? [1] https://gcc.gnu.org/ml/gcc-patches/2015-12/msg02198.html Uros.
Index: alias.c =================================================================== --- alias.c (revision 232142) +++ alias.c (working copy) @@ -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; } Index: symtab.c =================================================================== --- symtab.c (revision 232142) +++ symtab.c (working copy) @@ -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, bo /* 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, bo /* 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, bo 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. */