aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2011-10-06 14:28:47 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2011-10-06 14:28:47 +0000
commitbc622b2a5ee54492a43a75c4170efefc33690471 (patch)
tree4104f08e0361ce364360eb0fb8f8cae19031d493 /gcc
parent7a9a6698cc1a85333236622281f8042d27cb850e (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/tree-vect-generic.c11
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;