mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-11 11:35:02 +08:00
re PR tree-optimization/34635 (tree check: expected polynomial_chrec, have integer_cst in add_multivariate_self_dist, at tree-data-ref.c:2813)
2007-12-19 Sebastian Pop <sebastian.pop@amd.com> PR tree-optimization/34635 * tree-data-ref.c (add_other_self_distances): Make sure that the evolution step is constant. * gcc.dg/tree-ssa/pr34635.c: New. * gcc.dg/tree-ssa/pr34635-1.c: New. From-SVN: r131275
This commit is contained in:
parent
8c7cc333be
commit
097392de6b
@ -1,3 +1,9 @@
|
||||
2007-12-19 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
PR tree-optimization/34635
|
||||
* tree-data-ref.c (add_other_self_distances): Make sure that the
|
||||
evolution step is constant.
|
||||
|
||||
2008-01-03 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/34608
|
||||
|
@ -1,3 +1,9 @@
|
||||
2007-12-19 Sebastian Pop <sebastian.pop@amd.com>
|
||||
|
||||
PR tree-optimization/34635
|
||||
* gcc.dg/tree-ssa/pr34635.c: New.
|
||||
* gcc.dg/tree-ssa/pr34635-1.c: New.
|
||||
|
||||
2008-01-02 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
PR middle-end/34562
|
||||
|
14
gcc/testsuite/gcc.dg/tree-ssa/pr34635-1.c
Normal file
14
gcc/testsuite/gcc.dg/tree-ssa/pr34635-1.c
Normal file
@ -0,0 +1,14 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O3" } */
|
||||
|
||||
void foo(int x[])
|
||||
{
|
||||
int i, j;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
for (j = 0; j < 2; j++)
|
||||
{
|
||||
x[i] = x[i+j];
|
||||
x[i] = x[i+j];
|
||||
}
|
||||
}
|
14
gcc/testsuite/gcc.dg/tree-ssa/pr34635.c
Normal file
14
gcc/testsuite/gcc.dg/tree-ssa/pr34635.c
Normal file
@ -0,0 +1,14 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O3" } */
|
||||
|
||||
void foo(int x[])
|
||||
{
|
||||
int i, j;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
for (j = 0; j < 2; j++)
|
||||
{
|
||||
x[i] = x[i*j];
|
||||
x[i] = x[i*j];
|
||||
}
|
||||
}
|
@ -2818,9 +2818,9 @@ constant_access_functions (const struct data_dependence_relation *ddr)
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* Helper function for the case where DDR_A and DDR_B are the same
|
||||
multivariate access function. */
|
||||
multivariate access function with a constant step. For an example
|
||||
see pr34635-1.c. */
|
||||
|
||||
static void
|
||||
add_multivariate_self_dist (struct data_dependence_relation *ddr, tree c_2)
|
||||
@ -2890,7 +2890,17 @@ add_other_self_distances (struct data_dependence_relation *ddr)
|
||||
return;
|
||||
}
|
||||
|
||||
add_multivariate_self_dist (ddr, DR_ACCESS_FN (DDR_A (ddr), 0));
|
||||
access_fun = DR_ACCESS_FN (DDR_A (ddr), 0);
|
||||
|
||||
if (TREE_CODE (CHREC_LEFT (access_fun)) == POLYNOMIAL_CHREC)
|
||||
add_multivariate_self_dist (ddr, access_fun);
|
||||
else
|
||||
/* The evolution step is not constant: it varies in
|
||||
the outer loop, so this cannot be represented by a
|
||||
distance vector. For example in pr34635.c the
|
||||
evolution is {0, +, {0, +, 4}_1}_2. */
|
||||
DDR_AFFINE_P (ddr) = false;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user