summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorirar <irar@138bc75d-0d04-0410-961f-82ee72b054a4>2009-05-25 07:56:32 +0000
committerirar <irar@138bc75d-0d04-0410-961f-82ee72b054a4>2009-05-25 07:56:32 +0000
commit765a637f0e40c74ccb892fa61053af36738456b7 (patch)
tree0b5321d9c900d16365e4970cc0a06605923773b1
parent1eb4ddaff88afdbaa1a7d5ecf9c4fc61800078b2 (diff)
downloadgcc-765a637f0e40c74ccb892fa61053af36738456b7.tar.gz
PR tree-optimization/40238
* tree-vect-stmts.c (vect_init_vector): Insert initialization statements after basic block's labels. * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info() to free the allocated memory. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147844 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/vect/pr40238.c35
-rw-r--r--gcc/tree-vect-slp.c3
-rw-r--r--gcc/tree-vect-stmts.c2
5 files changed, 51 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 78985d3a1ba..5696b43b4ca 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2009-05-25 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/40238
+ * tree-vect-stmts.c (vect_init_vector): Insert initialization
+ statements after basic block's labels.
+ * tree-vect-slp.c (vect_slp_transform_bb): Call destroy_bb_vec_info()
+ to free the allocated memory.
+
2009-05-24 Kaz Kojima <kkojima@gcc.gnu.org>
* gcc/config/sh/sh.c (sh_set_return_address): Mark store of
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index e0907db628f..7a7231036de 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-05-25 Ira Rosen <irar@il.ibm.com>
+
+ PR tree-optimization/40238
+ * gcc.dg/vect/pr40238.c: New test.
+
2009-05-24 Jerry DeLisle <jvdelisle@gcc.gnu.org>
Dominique Dhumieres
diff --git a/gcc/testsuite/gcc.dg/vect/pr40238.c b/gcc/testsuite/gcc.dg/vect/pr40238.c
new file mode 100644
index 00000000000..91cf0982439
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/vect/pr40238.c
@@ -0,0 +1,35 @@
+/* { dg-do compile } */
+
+extern int xdo_rb_ctr_row( int *pos_code);
+
+int xgp_ahd_interpolate (int tile)
+{
+ int p[4];
+
+ switch (tile) {
+ default:
+ case 0:
+ case 1:
+ p[0] = 0; p[1] = 1; p[2] = 2; p[3] = 3;
+ break;
+ case 2:
+ case 3:
+ p[0] = 1; p[1] = 0; p[2] = 3; p[3] = 2;
+ break;
+ case 4:
+ case 5:
+ p[0] = 3; p[1] = 2; p[2] = 1; p[3] = 0;
+ break;
+ case 6:
+ case 7:
+ p[0] = 2; p[1] = 3; p[2] = 0; p[3] = 1;
+ break;
+ }
+
+ xdo_rb_ctr_row(p);
+ xdo_rb_ctr_row(p);
+ return 0;
+}
+
+/* { dg-final { cleanup-tree-dump "vect" } } */
+
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index ece3297422b..6c932109baf 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -2089,6 +2089,7 @@ vect_slp_transform_bb (basic_block bb)
if (vect_print_dump_info (REPORT_DETAILS))
fprintf (vect_dump, "BB VECTORIZED\n");
-}
+ destroy_bb_vec_info (bb_vinfo);
+}
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 9ac733a76be..5ca8d942e18 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -833,7 +833,7 @@ vect_init_vector (gimple stmt, tree vector_var, tree vector_type,
gcc_assert (bb_vinfo);
bb = BB_VINFO_BB (bb_vinfo);
- gsi_bb_start = gsi_start_bb (bb);
+ gsi_bb_start = gsi_after_labels (bb);
gsi_insert_before (&gsi_bb_start, init_stmt, GSI_SAME_STMT);
}
}