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 | |
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')
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/gimplify.c | 17 |
2 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 12e8601..f959761 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,13 @@ 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 * config/aarch64/aarch64.c (virt_or_elim_regno_p): New. 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; |