re PR tree-optimization/58497 (SLP vectorizes identical operations)
2015-11-12 Richard Biener <rguenther@suse.de> PR tree-optimization/58497 * tree-vect-generic.c: Include gimplify.h. (tree_vec_extract): Lookup constant/constructor DEFs. (do_cond): Unshare cond. From-SVN: r230216
This commit is contained in:
parent
c471289ac8
commit
3826795b8c
2 changed files with 18 additions and 1 deletions
|
@ -1,3 +1,10 @@
|
|||
2015-11-12 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/58497
|
||||
* tree-vect-generic.c: Include gimplify.h.
|
||||
(tree_vec_extract): Lookup constant/constructor DEFs.
|
||||
(do_cond): Unshare cond.
|
||||
|
||||
2015-11-12 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* config/i386/i386.c (ix86_legitimate_combined_insn): Reject
|
||||
|
|
|
@ -35,6 +35,7 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "tree-eh.h"
|
||||
#include "gimple-iterator.h"
|
||||
#include "gimplify-me.h"
|
||||
#include "gimplify.h"
|
||||
#include "tree-cfg.h"
|
||||
|
||||
|
||||
|
@ -105,6 +106,15 @@ static inline tree
|
|||
tree_vec_extract (gimple_stmt_iterator *gsi, tree type,
|
||||
tree t, tree bitsize, tree bitpos)
|
||||
{
|
||||
if (TREE_CODE (t) == SSA_NAME)
|
||||
{
|
||||
gimple *def_stmt = SSA_NAME_DEF_STMT (t);
|
||||
if (is_gimple_assign (def_stmt)
|
||||
&& (gimple_assign_rhs_code (def_stmt) == VECTOR_CST
|
||||
|| (bitpos
|
||||
&& gimple_assign_rhs_code (def_stmt) == CONSTRUCTOR)))
|
||||
t = gimple_assign_rhs1 (def_stmt);
|
||||
}
|
||||
if (bitpos)
|
||||
{
|
||||
if (TREE_CODE (type) == BOOLEAN_TYPE)
|
||||
|
@ -1419,7 +1429,7 @@ do_cond (gimple_stmt_iterator *gsi, tree inner_type, tree a, tree b,
|
|||
if (TREE_CODE (TREE_TYPE (b)) == VECTOR_TYPE)
|
||||
b = tree_vec_extract (gsi, inner_type, b, bitsize, bitpos);
|
||||
tree cond = gimple_assign_rhs1 (gsi_stmt (*gsi));
|
||||
return gimplify_build3 (gsi, code, inner_type, cond, a, b);
|
||||
return gimplify_build3 (gsi, code, inner_type, unshare_expr (cond), a, b);
|
||||
}
|
||||
|
||||
/* Expand a vector COND_EXPR to scalars, piecewise. */
|
||||
|
|
Loading…
Add table
Reference in a new issue