diff options
author | Richard Guenther <rguenther@suse.de> | 2011-10-06 14:28:47 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-10-06 14:28:47 +0000 |
commit | bc622b2a5ee54492a43a75c4170efefc33690471 (patch) | |
tree | 4104f08e0361ce364360eb0fb8f8cae19031d493 /gcc | |
parent | 7a9a6698cc1a85333236622281f8042d27cb850e (diff) | |
download | gcc-bc622b2a5ee54492a43a75c4170efefc33690471.zip gcc-bc622b2a5ee54492a43a75c4170efefc33690471.tar.gz gcc-bc622b2a5ee54492a43a75c4170efefc33690471.tar.bz2 |
tree-vect-generic.c (vector_element): Look at previous generated results.
2011-10-06 Richard Guenther <rguenther@suse.de>
* tree-vect-generic.c (vector_element): Look at previous
generated results.
From-SVN: r179613
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-vect-generic.c | 11 |
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 96fce89..74b1139 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-10-06 Richard Guenther <rguenther@suse.de> + + * tree-vect-generic.c (vector_element): Look at previous + generated results. + 2011-10-06 David Edelsohn <dje.gcc@gmail.com> PR target/39950 diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c index ef03b35..8f9f2a8 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; |