aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2011-10-04 15:36:24 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2011-10-04 15:36:24 +0200
commit31330e16d502ac34453ff3d694d33c3c469af890 (patch)
tree7be6b9bfc5b2d537a6ada3b89f675284d792fe68
parentf548a3173e47b45bf132c533091c8776ca79b629 (diff)
downloadgcc-31330e16d502ac34453ff3d694d33c3c469af890.zip
gcc-31330e16d502ac34453ff3d694d33c3c469af890.tar.gz
gcc-31330e16d502ac34453ff3d694d33c3c469af890.tar.bz2
re PR tree-optimization/50522 (C++ std::valarray vectorization missed optimization)
PR tree-optimization/50522 * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test TYPE_RESTRICT. (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base unconditionally. From-SVN: r179502
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-ssa-alias.c5
2 files changed, 7 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3b973a0..b611321 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2011-10-04 Jakub Jelinek <jakub@redhat.com>
+ PR tree-optimization/50522
+ * tree-ssa-alias.c (ptr_deref_may_alias_decl_p): Don't test
+ TYPE_RESTRICT.
+ (ptr_derefs_may_alias_p): Call pt_solutions_same_restrict_base
+ unconditionally.
+
* fold-const.c (fold_unary_loc): Don't optimize
POINTER_PLUS_EXPR casted to TYPE_RESTRICT pointer by
casting the inner pointer if it isn't TYPE_RESTRICT.
diff --git a/gcc/tree-ssa-alias.c b/gcc/tree-ssa-alias.c
index 82307de..a890944 100644
--- a/gcc/tree-ssa-alias.c
+++ b/gcc/tree-ssa-alias.c
@@ -223,7 +223,6 @@ ptr_deref_may_alias_decl_p (tree ptr, tree decl)
pointer and that pointers points-to set doesn't contain this decl
then they can't alias. */
if (DECL_RESTRICTED_P (decl)
- && TYPE_RESTRICT (TREE_TYPE (ptr))
&& pi->pt.vars_contains_restrict)
return bitmap_bit_p (pi->pt.vars, DECL_PT_UID (decl));
@@ -319,9 +318,7 @@ ptr_derefs_may_alias_p (tree ptr1, tree ptr2)
/* If both pointers are restrict-qualified try to disambiguate
with restrict information. */
- if (TYPE_RESTRICT (TREE_TYPE (ptr1))
- && TYPE_RESTRICT (TREE_TYPE (ptr2))
- && !pt_solutions_same_restrict_base (&pi1->pt, &pi2->pt))
+ if (!pt_solutions_same_restrict_base (&pi1->pt, &pi2->pt))
return false;
/* ??? This does not use TBAA to prune decls from the intersection