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.  */

Reply via email to