summaryrefslogtreecommitdiff
path: root/gcc/tree-vect-generic.c
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-06 14:28:47 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2011-10-06 14:28:47 +0000
commit649aab9e769e3d426c5527d09843d18fda03a825 (patch)
tree4104f08e0361ce364360eb0fb8f8cae19031d493 /gcc/tree-vect-generic.c
parent79bf7a6f28c10968ef88778a9157d0bac4d604d0 (diff)
downloadgcc-649aab9e769e3d426c5527d09843d18fda03a825.tar.gz
2011-10-06 Richard Guenther <rguenther@suse.de>
* tree-vect-generic.c (vector_element): Look at previous generated results. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@179613 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-vect-generic.c')
-rw-r--r--gcc/tree-vect-generic.c11
1 files changed, 11 insertions, 0 deletions
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;