From 0d0cdcaa23b24dd0b667bee1051c9f0215e4fb8e Mon Sep 17 00:00:00 2001 From: spop Date: Tue, 26 Jul 2011 18:47:44 +0000 Subject: [PATCH] Fix PR48805: Do not instantiate ADDR_EXPRs With this patch we avoid instantiating ADDR_EXPR: it makes no sense to translate &b[i] into &b[{0, +, 1}_1]. Bootstrapped and tested on amd64-linux. 2011-07-26 Sebastian Pop 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176801 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 7 ++++++- gcc/testsuite/gcc.dg/graphite/id-pr48805.c | 20 ++++++++++++++++++++ gcc/tree-scalar-evolution.c | 1 + 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.dg/graphite/id-pr48805.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 06e0074..d3d9919 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-07-26 Sebastian Pop + + PR middle-end/48805 + * tree-scalar-evolution.c (instantiate_scev_r): Return + chrec_dont_know for ADDR_EXPR. + 2011-07-26 Uros Bizjak H.J. Lu diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1e351fe..4e0adb1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-07-26 Sebastian Pop + + PR middle-end/48805 + * gcc.dg/graphite/id-pr48805.c: New. + 2011-07-26 Tobias Burnus * gfortran.dg/coarray_lib_token_2.f90: New. @@ -12,7 +17,7 @@ PR tree-opt/49671 * gcc.dg/tree-ssa/pr49671-1.c: New testcase. * gcc.dg/tree-ssa/pr49671-2.c: New testcase. - + 2011-07-25 Rainer Orth * lib/target-supports.exp (check_effective_target_mmap): New proc. 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; -- 2.7.4