diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 12e86013561..f95976143ab 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2016-03-16 Richard Henderson + Richard Biener + + PR middle-end/70240 + PR middle-end/68215 + PR tree-opt/68714 + * gimplify.c (gimplify_expr) [VEC_COND_EXPR]: Gimplify the + first operand as is_gimple_condexpr. + 2016-03-16 Richard Henderson PR target/70048 diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 84ce46ea1a3..f3e5c392f6b 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -10799,8 +10799,23 @@ gimplify_expr (tree *expr_p, gimple_seq *pre_p, gimple_seq *post_p, goto expr_2; } - case FMA_EXPR: case VEC_COND_EXPR: + { + enum gimplify_status r0, r1, r2; + + r0 = gimplify_expr (&TREE_OPERAND (*expr_p, 0), pre_p, + post_p, is_gimple_condexpr, fb_rvalue); + r1 = gimplify_expr (&TREE_OPERAND (*expr_p, 1), pre_p, + post_p, is_gimple_val, fb_rvalue); + r2 = gimplify_expr (&TREE_OPERAND (*expr_p, 2), pre_p, + post_p, is_gimple_val, fb_rvalue); + + ret = MIN (MIN (r0, r1), r2); + recalculate_side_effects (*expr_p); + } + break; + + case FMA_EXPR: case VEC_PERM_EXPR: /* Classified as tcc_expression. */ goto expr_3;