tree-optimization/114787 - more careful loop update with CFG cleanup
commitcc48418cfc2e555d837ae9138cbfac23acb3cdf9
authorRichard Biener <rguenther@suse.de>
Wed, 24 Apr 2024 06:42:40 +0000 (24 08:42 +0200)
committerRichard Biener <rguenther@suse.de>
Wed, 24 Apr 2024 08:11:00 +0000 (24 10:11 +0200)
tree32d95b47915d733e81bc0f41a3ee48f64a954235
parente28e8ab1a92e9b49f7c4045377577c8dc17751b7
tree-optimization/114787 - more careful loop update with CFG cleanup

When CFG cleanup removes a backedge we have to be more careful with
loop update.  In particular we need to clear niter info and estimates
and if we remove the last backedge of a loop we have to also mark
it for removal to prevent a following basic block merging to associate
loop info with an unrelated header.

PR tree-optimization/114787
* tree-cfg.cc (remove_edge_and_dominated_blocks): When
removing a loop backedge clear niter info and when removing
the last backedge of a loop mark that loop for removal.

* gcc.dg/torture/pr114787.c: New testcase.
gcc/testsuite/gcc.dg/torture/pr114787.c [new file with mode: 0644]
gcc/tree-cfg.cc