Gimplify vec_cond_expr with condition inside

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.

Co-Authored-By: Richard Biener <rguenther@suse.de>

From-SVN: r234271
This commit is contained in:
Richard Henderson 2016-03-16 16:53:01 -07:00 committed by Richard Henderson
parent 9e0218fcbe
commit e93ed60e7b
2 changed files with 25 additions and 1 deletions

View File

@ -1,3 +1,12 @@
2016-03-16 Richard Henderson <rth@redhat.com>
Richard Biener <rguenth@suse.de>
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 <rth@redhat.com>
PR target/70048

View File

@ -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;