re PR middle-end/53409 (ICE: vector VEC(vec_void_p,base) index domain error, in vinfo_for_stmt at tree-vectorizer.h:630)

PR tree-optimization/53409
	* tree-vect-loop.c (vect_analyze_loop_operations): Don't check
	vinfo_for_stmt (op_def_stmt) if op_def_stmt isn't inside loop.

	* gcc.c-torture/compile/pr53409.c: New test.

From-SVN: r187739
This commit is contained in:
Jakub Jelinek 2012-05-21 23:02:40 +02:00 committed by Jakub Jelinek
parent 72b68f358f
commit ee0cbe0ab6
4 changed files with 29 additions and 1 deletions

View File

@ -1,5 +1,9 @@
2012-05-21 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/53409
* tree-vect-loop.c (vect_analyze_loop_operations): Don't check
vinfo_for_stmt (op_def_stmt) if op_def_stmt isn't inside loop.
PR tree-optimization/53410
* fold-const.c (fold_binary_loc): Use build_zero_cst (type)
instead of build_int_cst (type, 0) where vector types might be

View File

@ -1,5 +1,8 @@
2012-05-21 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/53409
* gcc.c-torture/compile/pr53409.c: New test.
PR tree-optimization/53410
* gcc.c-torture/compile/pr53410-1.c: New test.
* gcc.c-torture/compile/pr53410-2.c: New test.

View File

@ -0,0 +1,19 @@
/* PR tree-optimization/53409 */
int a, c, d, e, f;
int b[0];
int
main ()
{
if (f)
e = 0;
int g = d;
for (c = 0; c <= 1; c++)
{
for (a = 0; a <= 1; a = (char) a + 1)
b[c] = g;
a = 0;
}
return 0;
}

View File

@ -1326,7 +1326,9 @@ vect_analyze_loop_operations (loop_vec_info loop_vinfo, bool slp)
return false;
op_def_stmt = SSA_NAME_DEF_STMT (phi_op);
if (!op_def_stmt || !vinfo_for_stmt (op_def_stmt))
if (!op_def_stmt
|| !flow_bb_inside_loop_p (loop, gimple_bb (op_def_stmt))
|| !vinfo_for_stmt (op_def_stmt))
return false;
if (STMT_VINFO_RELEVANT (vinfo_for_stmt (op_def_stmt))