re PR tree-optimization/51070 (ICE verify_gimple failed)

2012-01-03  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/51070
	* tree-loop-distribution.c (stmt_has_scalar_dependences_outside_loop):
	Properly handle calls.

	* gcc.dg/torture/pr51070-2.c: New testcase.

From-SVN: r182839
This commit is contained in:
Richard Guenther 2012-01-03 12:07:18 +00:00 committed by Richard Biener
parent f1749ec1b1
commit c3e85659f1
4 changed files with 52 additions and 3 deletions

View file

@ -1,3 +1,9 @@
2012-01-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/51070
* tree-loop-distribution.c (stmt_has_scalar_dependences_outside_loop):
Properly handle calls.
2012-01-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/51692

View file

@ -1,3 +1,8 @@
2012-01-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/51070
* gcc.dg/torture/pr51070-2.c: New testcase.
2012-01-03 Richard Guenther <rguenther@suse.de>
PR tree-optimization/51692

View file

@ -0,0 +1,35 @@
/* { dg-do compile } */
/* { dg-options "-fno-inline" } */
int
func_4 (int si1, int si2)
{
return si1;
}
int
func_14 (int left, int right)
{
return 1;
}
int
func_37 (int left, int right)
{
return left;
}
int g_92[1024];
int g_95[1024];
int g_224;
int g_352[1024];
int
func_9 ()
{
for (; g_224; g_224 += 1)
{
g_95[0] = func_4 (func_37 (g_92[g_224], 0), 0);
g_92[g_224] = 0, g_352[g_224] = func_14 (0, 0);
}
return 0;
}

View file

@ -89,8 +89,9 @@ stmt_has_scalar_dependences_outside_loop (gimple stmt)
switch (gimple_code (stmt))
{
case GIMPLE_CALL:
case GIMPLE_ASSIGN:
name = gimple_assign_lhs (stmt);
name = gimple_get_lhs (stmt);
break;
case GIMPLE_PHI:
@ -101,8 +102,10 @@ stmt_has_scalar_dependences_outside_loop (gimple stmt)
return false;
}
return TREE_CODE (name) == SSA_NAME
&& ssa_name_has_uses_outside_loop_p (name, loop_containing_stmt (stmt));
return (name
&& TREE_CODE (name) == SSA_NAME
&& ssa_name_has_uses_outside_loop_p (name,
loop_containing_stmt (stmt)));
}
/* Update the PHI nodes of NEW_LOOP. NEW_LOOP is a duplicate of