tree-optimization/106249 - unroll-and-jam and LC SSA upate
When I delayed the LC SSA update in unroll-and-jam this exposed an issue that tree_transform_and_unroll_loop does a full function LC SSA verification when new_loop is NULL (when it doesn't need to do versioning). That wasn't intended. I also took the chance to make the versioning in tree_transform_and_unroll_loop use TODO_update_ssa_nophi for the loop versioning SSA update which I somehow missed earlier. PR tree-optimization/106249 * tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop): Only verify LC SSA of the new_loop if we created it. Use TODO_update_ssa_nophi for the SSA update after versioning the loop. * gcc.dg/pr106249.c: New testcase.
This commit is contained in:
parent
43997608a0
commit
c479c40f8c
16
gcc/testsuite/gcc.dg/pr106249.c
Normal file
16
gcc/testsuite/gcc.dg/pr106249.c
Normal file
@ -0,0 +1,16 @@
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O -floop-unroll-and-jam --param unroll-jam-min-percent=0" } */
|
||||
|
||||
void
|
||||
foo (double *arr)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
for (i = 0; i < 4; ++i)
|
||||
for (j = 0; j < 4; ++j)
|
||||
arr[j] = 0;
|
||||
|
||||
for (i = 1; i < 4; ++i)
|
||||
for (j = 0; j < 4; ++j)
|
||||
arr[j] = 1.0 / (i + 1);
|
||||
}
|
@ -1208,7 +1208,7 @@ tree_transform_and_unroll_loop (class loop *loop, unsigned factor,
|
||||
profile_probability::guessed_always (),
|
||||
true);
|
||||
gcc_assert (new_loop != NULL);
|
||||
update_ssa (TODO_update_ssa);
|
||||
update_ssa (TODO_update_ssa_no_phi);
|
||||
|
||||
/* Prepare the cfg and update the phi nodes. Move the loop exit to the
|
||||
loop latch (and make its condition dummy, for the moment). */
|
||||
@ -1428,7 +1428,8 @@ tree_transform_and_unroll_loop (class loop *loop, unsigned factor,
|
||||
checking_verify_flow_info ();
|
||||
checking_verify_loop_structure ();
|
||||
checking_verify_loop_closed_ssa (true, loop);
|
||||
checking_verify_loop_closed_ssa (true, new_loop);
|
||||
if (new_loop)
|
||||
checking_verify_loop_closed_ssa (true, new_loop);
|
||||
}
|
||||
|
||||
/* Wrapper over tree_transform_and_unroll_loop for case we do not
|
||||
|
Loading…
Reference in New Issue
Block a user