diff options
| author | Richard Guenther <rguenther@suse.de> | 2011-09-01 11:46:08 +0000 |
|---|---|---|
| committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-09-01 11:46:08 +0000 |
| commit | 4e71066d7ed30ff6582ba01d1cb319787bf1ac5a (patch) | |
| tree | de79a98229582fd910a363d796804b194a844d10 /gcc/tree-vect-stmts.c | |
| parent | dbe36d674a7e0916981fbb8728d4c31d26e84462 (diff) | |
| download | gcc-4e71066d7ed30ff6582ba01d1cb319787bf1ac5a.zip gcc-4e71066d7ed30ff6582ba01d1cb319787bf1ac5a.tar.gz gcc-4e71066d7ed30ff6582ba01d1cb319787bf1ac5a.tar.bz2 | |
expr.c (expand_expr_real_2): Move COND_EXPR and VEC_COND_EXPR handling here, from ...
2011-08-31 Richard Guenther <rguenther@suse.de>
* expr.c (expand_expr_real_2): Move COND_EXPR and VEC_COND_EXPR
handling here, from ...
(expand_expr_real_1): ... here.
* gimple-pretty-print.c (dump_ternary_rhs): Handle COND_EXPR
and VEC_COND_EXPR.
* gimple.c (gimple_rhs_class_table): Make COND_EXPR and VEC_COND_EXPR
a GIMPLE_TERNARY_RHS.
* tree-cfg.c (verify_gimple_assign_ternary): Handle COND_EXPR
and VEC_COND_EXPR here ...
(verify_gimple_assign_single): ... not here.
* gimple-fold.c (fold_gimple_assign): Move COND_EXPR folding.
* tree-object-size.c (cond_expr_object_size): Adjust.
(collect_object_sizes_for): Likewise.
* tree-scalar-evolution.c (interpret_expr): Don't handle
ternary RHSs.
* tree-ssa-forwprop.c (forward_propagate_into_cond): Fix and
simplify.
(ssa_forward_propagate_and_combine): Adjust.
* tree-ssa-loop-im.c (move_computations_stmt): Build the COND_EXPR
as ternary.
* tree-ssa-threadedge.c (fold_assignment_stmt): Adjust.
* tree-vect-loop.c (vect_is_simple_reduction_1): Likewise.
* tree-vect-stmt.c (vectorizable_condition): Likewise.
* tree-vrp.c (extract_range_from_cond_expr): Likewise.
(extract_range_from_assignment): Likewise.
From-SVN: r178408
Diffstat (limited to 'gcc/tree-vect-stmts.c')
| -rw-r--r-- | gcc/tree-vect-stmts.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 3b5fa01..2a13181 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -4740,7 +4740,6 @@ vectorizable_condition (gimple stmt, gimple_stmt_iterator *gsi, { tree scalar_dest = NULL_TREE; tree vec_dest = NULL_TREE; - tree op = NULL_TREE; tree cond_expr, then_clause, else_clause; stmt_vec_info stmt_info = vinfo_for_stmt (stmt); tree vectype = STMT_VINFO_VECTYPE (stmt_info); @@ -4794,11 +4793,9 @@ vectorizable_condition (gimple stmt, gimple_stmt_iterator *gsi, if (code != COND_EXPR) return false; - gcc_assert (gimple_assign_single_p (stmt)); - op = gimple_assign_rhs1 (stmt); - cond_expr = TREE_OPERAND (op, 0); - then_clause = TREE_OPERAND (op, 1); - else_clause = TREE_OPERAND (op, 2); + cond_expr = gimple_assign_rhs1 (stmt); + then_clause = gimple_assign_rhs2 (stmt); + else_clause = gimple_assign_rhs3 (stmt); if (!vect_is_simple_cond (cond_expr, loop_vinfo)) return false; @@ -4839,7 +4836,8 @@ vectorizable_condition (gimple stmt, gimple_stmt_iterator *gsi, if (!vec_stmt) { STMT_VINFO_TYPE (stmt_info) = condition_vec_info_type; - return expand_vec_cond_expr_p (TREE_TYPE (op), vec_mode); + return expand_vec_cond_expr_p (TREE_TYPE (gimple_assign_lhs (stmt)), + vec_mode); } /* Transform */ |
