aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIra Rosen <irar@il.ibm.com>2009-03-24 12:18:19 +0000
committerIra Rosen <irar@gcc.gnu.org>2009-03-24 12:18:19 +0000
commit09ac4473280febdcf2836aa234bc04152bc450c9 (patch)
tree87a8945de71076faf1d2221f88a968f9792198f6
parentd94a427e804f5dbdb5d4c322f48791d472e24614 (diff)
downloadgcc-09ac4473280febdcf2836aa234bc04152bc450c9.zip
gcc-09ac4473280febdcf2836aa234bc04152bc450c9.tar.gz
gcc-09ac4473280febdcf2836aa234bc04152bc450c9.tar.bz2
re PR tree-optimization/39529 (ICE on valid code)
PR tree-optimization/39529 * tree-vect-transform.c (vect_create_data_ref_ptr): Call mark_sym_for_renaming for the tag copied to the new vector pointer. From-SVN: r145029
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr39529.c21
-rw-r--r--gcc/tree-vect-transform.c5
4 files changed, 37 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6974b1f..c7aeb48 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2009-03-24 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/39529
+ * tree-vect-transform.c (vect_create_data_ref_ptr): Call
+ mark_sym_for_renaming for the tag copied to the new vector
+ pointer.
+
2009-03-24 Arthur Loiret <aloiret@debian.org>
* config.host (alpha*-*-linux*): Use driver-alpha.o and
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4f869a0..196a040 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-03-24 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/39529
+ * gcc.dg/vect/pr39529.c: New test.
+
2009-03-24 Dodji Seketeli <dodji@redhat.com>
Jakub Jelinek <jakub@redhat.com>
diff --git a/gcc/testsuite/gcc.dg/vect/pr39529.c b/gcc/testsuite/gcc.dg/vect/pr39529.c
new file mode 100644
index 0000000..4853c13
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr39529.c
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+
+void
+foo (void)
+{
+ char a[1024];
+ char *p = &a[0];
+ char *p2;
+
+ p2 = p + 1024;
+ do
+ {
+ p += 2;
+ *(p-2) = 1;
+ *(p-1) = 1;
+ } while (p < p2);
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
+
+
diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c
index 2afd4e0..a048342d 100644
--- a/gcc/tree-vect-transform.c
+++ b/gcc/tree-vect-transform.c
@@ -1099,7 +1099,10 @@ vect_create_data_ref_ptr (gimple stmt, struct loop *at_loop,
if (!MTAG_P (tag))
new_type_alias (vect_ptr, tag, DR_REF (dr));
else
- set_symbol_mem_tag (vect_ptr, tag);
+ {
+ set_symbol_mem_tag (vect_ptr, tag);
+ mark_sym_for_renaming (tag);
+ }
/** Note: If the dataref is in an inner-loop nested in LOOP, and we are
vectorizing LOOP (i.e. outer-loop vectorization), we need to create two