tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Check that base2_alias_set is non...
authorJan Hubicka <jh@suse.cz>
Tue, 25 Jun 2019 08:35:01 +0000 (10:35 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Tue, 25 Jun 2019 08:35:01 +0000 (08:35 +0000)
* tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Check that
base2_alias_set is non-zero before doing TBAA based disambiguation.

From-SVN: r272639

gcc/ChangeLog
gcc/tree-ssa-alias.c

index c5b729c63aa6a80ec3b520c408a5aa09779bc35b..f14b8267eb9c5511bb519c5ebf4a2e0d3634419a 100644 (file)
@@ -1,3 +1,8 @@
+2019-06-25  Jan Hubicka  <jh@suse.cz>
+
+       * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Check that
+       base2_alias_set is non-zero before doing TBAA based disambiguation.
+
 2019-06-25  Martin Liska  <mliska@suse.cz>
 
        PR tree-optimization/90973
index d9307390e4c98a17fd542789b44c9d9ee0106e5a..48f7364db2aeca8071cd5fee92c357823d79ba46 100644 (file)
@@ -1458,10 +1458,8 @@ indirect_ref_may_alias_decl_p (tree ref1 ATTRIBUTE_UNUSED, tree base1,
   if (!flag_strict_aliasing || !tbaa_p)
     return true;
 
-  ptrtype1 = TREE_TYPE (TREE_OPERAND (base1, 1));
-
   /* If the alias set for a pointer access is zero all bets are off.  */
-  if (base1_alias_set == 0)
+  if (base1_alias_set == 0 || base2_alias_set == 0)
     return true;
 
   /* When we are trying to disambiguate an access with a pointer dereference
@@ -1479,6 +1477,9 @@ indirect_ref_may_alias_decl_p (tree ref1 ATTRIBUTE_UNUSED, tree base1,
   if (base1_alias_set != base2_alias_set
       && !alias_sets_conflict_p (base1_alias_set, base2_alias_set))
     return false;
+
+  ptrtype1 = TREE_TYPE (TREE_OPERAND (base1, 1));
+
   /* If the size of the access relevant for TBAA through the pointer
      is bigger than the size of the decl we can't possibly access the
      decl via that pointer.  */