This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix testcase from PR48885
- From: Richard Biener <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Wed, 23 Sep 2015 14:58:06 +0200 (CEST)
- Subject: [PATCH] Fix testcase from PR48885
- Authentication-results: sourceware.org; auth=none
I am currently testing the following patch enabling us to optimize
void
test (int *a, int *b, int * restrict v)
{
*a = *v;
*b = *v;
}
there is a simple case we can handle without implementing ??? from
visit_loadstore.
Richard.
2015-09-23 Richard Biener <rguenther@suse.de>
PR tree-optimization/48885
* tree-ssa-structalias.c (visit_loadstore): Handle default defs
as not including any restrict tags from other pointers.
* gcc.dg/tree-ssa/restrict-6.c: New testcase.
Index: gcc/tree-ssa-structalias.c
===================================================================
*** gcc/tree-ssa-structalias.c (revision 228037)
--- gcc/tree-ssa-structalias.c (working copy)
*************** visit_loadstore (gimple *, tree base, tr
*** 6952,6961 ****
|| TREE_CODE (base) == TARGET_MEM_REF)
{
tree ptr = TREE_OPERAND (base, 0);
! if (TREE_CODE (ptr) == SSA_NAME)
{
/* ??? We need to make sure 'ptr' doesn't include any of
! the restrict tags in its points-to set. */
return false;
}
--- 7047,7057 ----
|| TREE_CODE (base) == TARGET_MEM_REF)
{
tree ptr = TREE_OPERAND (base, 0);
! if (TREE_CODE (ptr) == SSA_NAME
! && ! SSA_NAME_IS_DEFAULT_DEF (ptr))
{
/* ??? We need to make sure 'ptr' doesn't include any of
! the restrict tags we added bases for in its points-to set. */
return false;
}
Index: gcc/testsuite/gcc.dg/tree-ssa/restrict-6.c
===================================================================
*** gcc/testsuite/gcc.dg/tree-ssa/restrict-6.c (revision 0)
--- gcc/testsuite/gcc.dg/tree-ssa/restrict-6.c (working copy)
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -fdump-tree-fre1" } */
+
+ void
+ test (int *a, int *b, int * __restrict__ v)
+ {
+ *a = *v;
+ *b = *v;
+ }
+
+ /* { dg-final { scan-tree-dump-times "= \\*v" 1 "fre1" } } */