tree-optimization/104676 - free nb_iterations after loop distribution
Loop distribution can release SSA names used in nb_iterations, make sure to release those. 2022-02-24 Richard Biener <rguenther@suse.de> PR tree-optimization/104676 * tree-loop-distribution.cc (loop_distribution::execute): Do a full scev_reset. * gcc.dg/torture/pr104676.c: New testcase.
This commit is contained in:
parent
9251b457eb
commit
a4066d3a50
2 changed files with 36 additions and 1 deletions
35
gcc/testsuite/gcc.dg/torture/pr104676.c
Normal file
35
gcc/testsuite/gcc.dg/torture/pr104676.c
Normal file
|
@ -0,0 +1,35 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-additional-options "-ftree-loop-distribution -ftree-parallelize-loops=2" } */
|
||||
|
||||
struct S {
|
||||
int f;
|
||||
};
|
||||
|
||||
int n;
|
||||
|
||||
int
|
||||
foo (struct S *s)
|
||||
{
|
||||
int arr[3];
|
||||
int v = 0;
|
||||
|
||||
for (n = 0; n < 2; ++n)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < 2; ++i)
|
||||
{
|
||||
int j;
|
||||
|
||||
for (j = 0; j < s->f; ++j)
|
||||
++v;
|
||||
}
|
||||
|
||||
if (v)
|
||||
arr[0] = 0;
|
||||
|
||||
arr[n + 1] = 0;
|
||||
}
|
||||
|
||||
return arr[0];
|
||||
}
|
|
@ -3853,7 +3853,7 @@ loop_distribution::execute (function *fun)
|
|||
|
||||
/* Cached scalar evolutions now may refer to wrong or non-existing
|
||||
loops. */
|
||||
scev_reset_htab ();
|
||||
scev_reset ();
|
||||
mark_virtual_operands_for_renaming (fun);
|
||||
rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue