From a7e8a463cd1dbaccf6e7c4fa888768fcd257a30f Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Tue, 25 Jun 2019 10:35:01 +0200 Subject: [PATCH] tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Check that base2_alias_set is non-zero before doing TBAA based disambiguation. * 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 | 5 +++++ gcc/tree-ssa-alias.c | 7 ++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c5b729c63aa..f14b8267eb9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2019-06-25 Jan Hubicka + + * 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 PR tree-optimization/90973 diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c index d9307390e4c..48f7364db2a 100644 --- a/gcc/tree-ssa-alias.c +++ b/gcc/tree-ssa-alias.c @@ -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. */ -- 2.30.2