re PR tree-optimization/64406 (ICE: SIGSEGV in estimate_numbers_of_iterations_loop (tree-ssa-loop-niter.c:3453) with custom flags)

2015-01-13  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/64406
	* tree-loop-distibution.c (pass_loop_distribution::execute):
	Reset the SCEV hashtable if we distributed anything.

	* gcc.dg/pr64406.c: New testcase.

From-SVN: r219528
This commit is contained in:
Richard Biener 2015-01-13 13:41:46 +00:00 committed by Richard Biener
parent 96bb56b2d7
commit d0ed943ca4
4 changed files with 40 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2015-01-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/64406
* tree-loop-distibution.c (pass_loop_distribution::execute):
Reset the SCEV hashtable if we distributed anything.
2015-01-13 Richard Biener <rguenther@suse.de> 2015-01-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/64404 PR tree-optimization/64404

View File

@ -1,3 +1,8 @@
2015-01-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/64406
* gcc.dg/pr64406.c: New testcase.
2015-01-13 Richard Biener <rguenther@suse.de> 2015-01-13 Richard Biener <rguenther@suse.de>
PR tree-optimization/64404 PR tree-optimization/64404

View File

@ -0,0 +1,26 @@
/* { dg-do compile } */
/* { dg-options "-O -ftree-loop-distribute-patterns -fno-tree-loop-ivcanon -fno-tree-loop-vectorize -ftree-vectorize" } */
unsigned in[72];
void bar (unsigned out[], unsigned ia[]);
void
foo ()
{
int i;
unsigned out[72], ia[8];
for (i = 0; i < 8; i++)
{
out[i * 8] = in[i * 8] + 5;
out[i * 8 + 1] = in[i * 8 + 1] + 6;
out[i * 8 + 2] = in[i * 8 + 2] + 7;
out[i * 8 + 3] = in[i * 8 + 3] + 8;
out[i * 8 + 4] = in[i * 8 + 4] + 9;
out[i * 8 + 5] = in[i * 8 + 5] + 10;
out[i * 8 + 6] = in[i * 8 + 6] + 11;
out[i * 8 + 7] = in[i * 8 + 7] + 12;
ia[i] = in[i];
}
bar (out, ia);
}

View File

@ -1838,6 +1838,9 @@ out:
if (changed) if (changed)
{ {
/* Cached scalar evolutions now may refer to wrong or non-existing
loops. */
scev_reset_htab ();
mark_virtual_operands_for_renaming (fun); mark_virtual_operands_for_renaming (fun);
rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa); rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa);
} }