aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-loop-ivopts.c
diff options
context:
space:
mode:
authorBin Cheng <bin.cheng@arm.com>2016-11-30 14:41:09 +0000
committerBin Cheng <amker@gcc.gnu.org>2016-11-30 14:41:09 +0000
commitaec0ee116cb445f5d7bbbaff3d39f60a8f7cb118 (patch)
tree5ccf9c104099340d6ccd504008b97d48de9e3595 /gcc/tree-ssa-loop-ivopts.c
parent44cd68d2b7adf87223f6e580f575c69bb6c19fa0 (diff)
downloadgcc-aec0ee116cb445f5d7bbbaff3d39f60a8f7cb118.zip
gcc-aec0ee116cb445f5d7bbbaff3d39f60a8f7cb118.tar.gz
gcc-aec0ee116cb445f5d7bbbaff3d39f60a8f7cb118.tar.bz2
re PR tree-optimization/78574 (ice on valid C code at -O2 and -O3 in both 32- and 64-bit modes on x86_64-linux-gnu (internal compiler error: Segmentation fault (program cc1)))
PR tree-optimization/78574 * tree-ssa-loop-ivopts.c (find_deriving_biv_for_expr): Skip loop header PHI that doesn't define biv. gcc/testsuite PR tree-optimization/78574 * gcc.c-torture/compile/pr78574.c: New test. From-SVN: r243026
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r--gcc/tree-ssa-loop-ivopts.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index 5c667a2..00b287a 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -1853,6 +1853,11 @@ find_deriving_biv_for_expr (struct ivopts_data *data, tree expr)
{
ssa_op_iter iter;
use_operand_p use_p;
+ basic_block phi_bb = gimple_bb (phi);
+
+ /* Skip loop header PHI that doesn't define biv. */
+ if (phi_bb->loop_father == data->current_loop)
+ return NULL;
if (virtual_operand_p (gimple_phi_result (phi)))
return NULL;