aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2016-03-16 16:53:01 -0700
committerRichard Henderson <rth@gcc.gnu.org>2016-03-16 16:53:01 -0700
commite93ed60e7b1c1f3eb257439ffb867872eeec1367 (patch)
treea1e4f99c1370b24a85bebc3845f755c126fbbc2c
parent9e0218fcbe62736e1df95aa228ae750d62646fed (diff)
downloadgcc-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
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/gimplify.c17
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;