re PR tree-optimization/55831 (ICE: verify_flow_info failed)

PR tree-optimization/55831
	* tree-vect-loop.c (get_initial_def_for_induction): Use
	gsi_after_labels instead of gsi_start_bb.

	* gcc.dg/pr55831.c: New test.

From-SVN: r194764
This commit is contained in:
Jakub Jelinek 2013-01-01 00:50:00 +01:00 committed by Jakub Jelinek
parent 8ba3a43eeb
commit 5bb6669db3
4 changed files with 53 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2013-01-01 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/55831
* tree-vect-loop.c (get_initial_def_for_induction): Use
gsi_after_labels instead of gsi_start_bb.
2012-12-27 David Edelsohn <dje.gcc@gmail.com>
* config/rs6000/rs6000.c (rs6000_deligitimze_address): Do not

View File

@ -1,3 +1,8 @@
2013-01-01 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/55831
* gcc.dg/pr55831.c: New test.
2012-12-31 Uros Bizjak <ubizjak@gmail.com>
* g++.dg/ipa/devirt-9.C: Cleanup inline ipa dump.

View File

@ -0,0 +1,39 @@
/* PR tree-optimization/55831 */
/* { dg-do compile } */
/* { dg-options "-O -fstrict-overflow -ftree-vectorize -Wno-unused-label" } */
int g;
short p, q;
void
foo (void)
{
short a = p, b = q, i;
if (a)
{
label:
for (i = 0; i < 8; i++)
b ^= a++;
if (!b)
g = 0;
}
}
void
bar (void)
{
short a = p, b = q, i;
if (a)
{
label:
for (i = 0; i < 8; i++)
b ^= (a = a + 1);
if (!b)
g = 0;
}
}

View File

@ -1,6 +1,6 @@
/* Loop Vectorization
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
2013 Free Software Foundation, Inc.
Contributed by Dorit Naishlos <dorit@il.ibm.com> and
Ira Rosen <irar@il.ibm.com>
@ -3406,7 +3406,7 @@ get_initial_def_for_induction (gimple iv_phi)
build1 (VIEW_CONVERT_EXPR, resvectype, induc_def), NULL_TREE);
induc_def = make_ssa_name (gimple_assign_lhs (new_stmt), new_stmt);
gimple_assign_set_lhs (new_stmt, induc_def);
si = gsi_start_bb (bb);
si = gsi_after_labels (bb);
gsi_insert_before (&si, new_stmt, GSI_SAME_STMT);
set_vinfo_for_stmt (new_stmt,
new_stmt_vec_info (new_stmt, loop_vinfo, NULL));