From bc622b2a5ee54492a43a75c4170efefc33690471 Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Thu, 6 Oct 2011 14:28:47 +0000 Subject: [PATCH] tree-vect-generic.c (vector_element): Look at previous generated results. 2011-10-06 Richard Guenther * tree-vect-generic.c (vector_element): Look at previous generated results. From-SVN: r179613 --- gcc/ChangeLog | 5 +++++ gcc/tree-vect-generic.c | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 96fce899fd2..74b1139225c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-10-06 Richard Guenther + + * tree-vect-generic.c (vector_element): Look at previous + generated results. + 2011-10-06 David Edelsohn PR target/39950 diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c index ef03b355f78..8f9f2a836d8 100644 --- a/gcc/tree-vect-generic.c +++ b/gcc/tree-vect-generic.c @@ -536,6 +536,17 @@ vector_element (gimple_stmt_iterator *gsi, tree vect, tree idx, tree *ptmpvec) idx = build_int_cst (TREE_TYPE (idx), index); } + /* When lowering a vector statement sequence do some easy + simplification by looking through intermediate vector results. */ + if (TREE_CODE (vect) == SSA_NAME) + { + gimple def_stmt = SSA_NAME_DEF_STMT (vect); + if (is_gimple_assign (def_stmt) + && (gimple_assign_rhs_code (def_stmt) == VECTOR_CST + || gimple_assign_rhs_code (def_stmt) == CONSTRUCTOR)) + vect = gimple_assign_rhs1 (def_stmt); + } + if (TREE_CODE (vect) == VECTOR_CST) { unsigned i; -- 2.30.2