diff options
author | Richard Henderson <rth@redhat.com> | 2016-03-16 16:53:01 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2016-03-16 16:53:01 -0700 |
commit | e93ed60e7b1c1f3eb257439ffb867872eeec1367 (patch) | |
tree | a1e4f99c1370b24a85bebc3845f755c126fbbc2c /gcc/gimplify.c | |
parent | 9e0218fcbe62736e1df95aa228ae750d62646fed (diff) | |
download | gcc-e93ed60e7b1c1f3eb257439ffb867872eeec1367.zip gcc-e93ed60e7b1c1f3eb257439ffb867872eeec1367.tar.gz gcc-e93ed60e7b1c1f3eb257439ffb867872eeec1367.tar.bz2 |
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
Diffstat (limited to 'gcc/gimplify.c')
-rw-r--r-- | gcc/gimplify.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/gcc/gimplify.c b/gcc/gimplify.c index 84ce46e..f3e5c39 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; |