On Sat, Jul 23, 2011 at 09:35, Sebastian Pop <seb...@gmail.com> wrote: > With this patch we avoid instantiating ADDR_EXPR: it makes no sense > to translate b[i] into b[{0, +, 1}_1]. >
This should have been &b[i] and &b[{0, +, 1}_1]. Ok for trunk? Thanks, Sebastian > Bootstrapped and tested on amd64-linux. > > 2011-07-22 Sebastian Pop <sebastian....@amd.com> > > PR middle-end/48805 > * tree-scalar-evolution.c (instantiate_scev_r): Return > chrec_dont_know for ADDR_EXPR. > > * gcc.dg/graphite/id-pr48805.c: New. > --- > gcc/ChangeLog | 6 ++++++ > gcc/testsuite/ChangeLog | 5 +++++ > gcc/testsuite/gcc.dg/graphite/id-pr48805.c | 20 ++++++++++++++++++++ > gcc/tree-scalar-evolution.c | 1 + > 4 files changed, 32 insertions(+), 0 deletions(-) > create mode 100644 gcc/testsuite/gcc.dg/graphite/id-pr48805.c > > diff --git a/gcc/ChangeLog b/gcc/ChangeLog > index 303c9c9..6a343b9 100644 > --- a/gcc/ChangeLog > +++ b/gcc/ChangeLog > @@ -1,5 +1,11 @@ > 2011-07-22 Sebastian Pop <sebastian....@amd.com> > > + PR middle-end/48805 > + * tree-scalar-evolution.c (instantiate_scev_r): Return > + chrec_dont_know for ADDR_EXPR. > + > +2011-07-22 Sebastian Pop <sebastian....@amd.com> > + > PR middle-end/48648 > * graphite-clast-to-gimple.c (clast_get_body_of_loop): Handle > CLAST assignments. > diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog > index bfdbcfb..9c59a43 100644 > --- a/gcc/testsuite/ChangeLog > +++ b/gcc/testsuite/ChangeLog > @@ -1,5 +1,10 @@ > 2011-07-22 Sebastian Pop <sebastian....@amd.com> > > + PR middle-end/48805 > + * gcc.dg/graphite/id-pr48805.c: New. > + > +2011-07-22 Sebastian Pop <sebastian....@amd.com> > + > PR middle-end/48648 > * gcc.dg/graphite/id-pr48648.c: New. > > diff --git a/gcc/testsuite/gcc.dg/graphite/id-pr48805.c > b/gcc/testsuite/gcc.dg/graphite/id-pr48805.c > new file mode 100644 > index 0000000..f13a828 > --- /dev/null > +++ b/gcc/testsuite/gcc.dg/graphite/id-pr48805.c > @@ -0,0 +1,20 @@ > +void *A(const void *a); > +void C(void); > + > +static void B(unsigned short a[]) > +{ > + long i, j, tmp; > + > + for(i = 0; i < 3; i++) { > + for(j = 1; j <= 3; j++) > + tmp -= a[i - j]; > + > + a[i] = (unsigned short)(tmp >> 1); > + } > +} > +void C(void) > +{ > + unsigned short a[3], b[3]; > + B(b + 1); > + A(a); > +} > diff --git a/gcc/tree-scalar-evolution.c b/gcc/tree-scalar-evolution.c > index bfa8c93..00fcd3f 100644 > --- a/gcc/tree-scalar-evolution.c > +++ b/gcc/tree-scalar-evolution.c > @@ -2645,6 +2645,7 @@ instantiate_scev_r (basic_block instantiate_below, > TREE_OPERAND (chrec, 0), > fold_conversions, cache, size_expr); > > + case ADDR_EXPR: > case SCEV_NOT_KNOWN: > return chrec_dont_know; > > -- > 1.7.4.1 > >