diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5841c09ec5f..e84d60a98dc 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2016-01-23 Jakub Jelinek + * tree-vect-stmts.c (vectorizable_condition): Build a VEC_COND_EXPR + directly instead of building a temporary tree. + PR bootstrap/69434 * genrecog.c: Define INCLUDE_ALGORITHM before including system.h, remove include. diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 1d2246d1f91..c986a002078 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -7478,7 +7478,7 @@ vectorizable_condition (gimple *stmt, gimple_stmt_iterator *gsi, tree comp_vectype = NULL_TREE; tree vec_cond_lhs = NULL_TREE, vec_cond_rhs = NULL_TREE; tree vec_then_clause = NULL_TREE, vec_else_clause = NULL_TREE; - tree vec_compare, vec_cond_expr; + tree vec_compare; tree new_temp; loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_info); enum vect_def_type dt, dts[4]; @@ -7691,12 +7691,10 @@ vectorizable_condition (gimple *stmt, gimple_stmt_iterator *gsi, vec_compare = build2 (TREE_CODE (cond_expr), vec_cmp_type, vec_cond_lhs, vec_cond_rhs); } - vec_cond_expr = build3 (VEC_COND_EXPR, vectype, - vec_compare, vec_then_clause, vec_else_clause); - - new_stmt = gimple_build_assign (vec_dest, vec_cond_expr); - new_temp = make_ssa_name (vec_dest, new_stmt); - gimple_assign_set_lhs (new_stmt, new_temp); + new_temp = make_ssa_name (vec_dest); + new_stmt = gimple_build_assign (new_temp, VEC_COND_EXPR, + vec_compare, vec_then_clause, + vec_else_clause); vect_finish_stmt_generation (stmt, new_stmt, gsi); if (slp_node) SLP_TREE_VEC_STMTS (slp_node).quick_push (new_stmt);