aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2011-07-26 18:47:44 +0000
committerSebastian Pop <spop@gcc.gnu.org>2011-07-26 18:47:44 +0000
commit4c7d675552917db06371e5316b6a170b246a0653 (patch)
treeeb8c91e40946cf110afb23ca04d3f96c9b631c4a
parentbf03b9ffeca63804bbdaafe308279b42caa0e2be (diff)
downloadgcc-4c7d675552917db06371e5316b6a170b246a0653.zip
gcc-4c7d675552917db06371e5316b6a170b246a0653.tar.gz
gcc-4c7d675552917db06371e5316b6a170b246a0653.tar.bz2
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 <sebastian.pop@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. From-SVN: r176801
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.dg/graphite/id-pr48805.c20
-rw-r--r--gcc/tree-scalar-evolution.c1
4 files changed, 33 insertions, 1 deletions
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 <sebastian.pop@amd.com>
+
+ PR middle-end/48805
+ * tree-scalar-evolution.c (instantiate_scev_r): Return
+ chrec_dont_know for ADDR_EXPR.
+
2011-07-26 Uros Bizjak <ubizjak@gmail.com>
H.J. Lu <hongjiu.lu@intel.com>
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 <sebastian.pop@amd.com>
+
+ PR middle-end/48805
+ * gcc.dg/graphite/id-pr48805.c: New.
+
2011-07-26 Tobias Burnus <burnus@net-b.de>
* 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 <ro@CeBiTec.Uni-Bielefeld.DE>
* 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;