re PR tree-optimization/35171 (ICE in vect_recog_dot_prod_pattern)

2008-02-12  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/35171
	* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
	default defs.

	* gcc.c-torture/compile/pr35171.c: New testcase.

From-SVN: r132270
This commit is contained in:
Richard Guenther 2008-02-12 21:29:39 +00:00 committed by Richard Biener
parent 8f768a5a18
commit 8665227f25
4 changed files with 25 additions and 5 deletions

View File

@ -1,3 +1,9 @@
2008-02-12 Richard Guenther <rguenther@suse.de>
PR tree-optimization/35171
* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Deal with
default defs.
2008-02-12 Richard Guenther <rguenther@suse.de>
PR middle-end/35163

View File

@ -1,3 +1,8 @@
2008-02-12 Richard Guenther <rguenther@suse.de>
PR tree-optimization/35171
* gcc.c-torture/compile/pr35171.c: New testcase.
2008-02-12 Richard Guenther <rguenther@suse.de>
PR middle-end/35163

View File

@ -0,0 +1,10 @@
int f(int a, int b, short c, int d, short e)
{
int i;
for (i = 1; i <= 2 ; i++) {
c -= 4;
a = c;
d = d + (b?b:e);
}
return a + d;
}

View File

@ -246,15 +246,14 @@ vect_recog_dot_prod_pattern (tree last_stmt, tree *type_in, tree *type_out)
prod_type = half_type;
stmt = SSA_NAME_DEF_STMT (oprnd0);
gcc_assert (stmt);
/* FORNOW. Can continue analyzing the def-use chain when this stmt in a phi
inside the loop (in case we are analyzing an outer-loop). */
if (TREE_CODE (stmt) != GIMPLE_MODIFY_STMT)
return NULL;
stmt_vinfo = vinfo_for_stmt (stmt);
gcc_assert (stmt_vinfo);
if (STMT_VINFO_DEF_TYPE (stmt_vinfo) != vect_loop_def)
return NULL;
/* FORNOW. Can continue analyzing the def-use chain when this stmt in a phi
inside the loop (in case we are analyzing an outer-loop). */
if (TREE_CODE (stmt) != GIMPLE_MODIFY_STMT)
return NULL;
expr = GIMPLE_STMT_OPERAND (stmt, 1);
if (TREE_CODE (expr) != MULT_EXPR)
return NULL;