From e93ed60e7b1c1f3eb257439ffb867872eeec1367 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 16 Mar 2016 16:53:01 -0700 Subject: [PATCH] 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 From-SVN: r234271 --- gcc/ChangeLog | 9 +++++++++ gcc/gimplify.c | 17 ++++++++++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) 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; -- 2.30.2