aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-if-conv.c
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@arm.com>2016-07-20 08:31:35 +0000
committerBin Cheng <amker@gcc.gnu.org>2016-07-20 08:31:35 +0000
commit04ac4afa844abb88a4a3bddd9dbfe5572d38aea4 (patch)
treeb72f80f3e28f1539a209eb9e94c9ae7de19f7c60 /gcc/tree-if-conv.c
parent21f8810377c9b62127df989e0d06b72eb0ae42d8 (diff)
downloadgcc-04ac4afa844abb88a4a3bddd9dbfe5572d38aea4.zip
gcc-04ac4afa844abb88a4a3bddd9dbfe5572d38aea4.tar.gz
gcc-04ac4afa844abb88a4a3bddd9dbfe5572d38aea4.tar.bz2
re PR tree-optimization/71503 (gcc ICE at -O3 on valid code on x86_64-linux-gnu in "gen_phi_arg_condition")
PR tree-optimization/71503 PR tree-optimization/71683 * tree-if-conv.c (gen_phi_arg_condition): Record true predicate and break. gcc/testsuite PR tree-optimization/71503 PR tree-optimization/71683 * gcc.dg/tree-ssa/ifc-pr71503.c: New test. * gcc.dg/tree-ssa/ifc-pr71683.c: New test. From-SVN: r238512
Diffstat (limited to 'gcc/tree-if-conv.c')
-rw-r--r--gcc/tree-if-conv.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c
index e5a3372..4253d19 100644
--- a/gcc/tree-if-conv.c
+++ b/gcc/tree-if-conv.c
@@ -1687,7 +1687,10 @@ gen_phi_arg_condition (gphi *phi, vec<int> *occur,
e = gimple_phi_arg_edge (phi, (*occur)[i]);
c = bb_predicate (e->src);
if (is_true_predicate (c))
- continue;
+ {
+ cond = c;
+ break;
+ }
c = force_gimple_operand_gsi_1 (gsi, unshare_expr (c),
is_gimple_condexpr, NULL_TREE,
true, GSI_SAME_STMT);