From 1da0876c9551590b2ff880e14f9510cd6e5bd467 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Wed, 20 Apr 2011 08:23:03 +0000 Subject: [PATCH] tree-vect-stmts.c (vectorizable_store): Only chain one related statement per copy. gcc/ * tree-vect-stmts.c (vectorizable_store): Only chain one related statement per copy. From-SVN: r172759 --- gcc/ChangeLog | 5 +++++ gcc/tree-vect-stmts.c | 15 +++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e9b126bbd63..3474847c9d1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-04-20 Richard Sandiford + + * tree-vect-stmts.c (vectorizable_store): Only chain one related + statement per copy. + 2011-04-20 Richard Sandiford * Makefile.in (INTERNAL_FN_DEF, INTERNAL_FN_H): Define. diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 0c7ab5ada88..879153d8031 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -3632,6 +3632,7 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, bump_vector_ptr (dataref_ptr, ptr_incr, gsi, stmt, NULL_TREE); } + new_stmt = NULL; if (strided_store) { result_chain = VEC_alloc (tree, heap, group_size); @@ -3688,16 +3689,18 @@ vectorizable_store (gimple stmt, gimple_stmt_iterator *gsi, gimple *vec_stmt, if (slp) continue; - if (j == 0) - STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt; - else - STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt; - - prev_stmt_info = vinfo_for_stmt (new_stmt); next_stmt = DR_GROUP_NEXT_DR (vinfo_for_stmt (next_stmt)); if (!next_stmt) break; } + if (!slp) + { + if (j == 0) + STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt; + else + STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt; + prev_stmt_info = vinfo_for_stmt (new_stmt); + } } VEC_free (tree, heap, dr_chain); -- 2.30.2