https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23970
Bug 23970 depends on bug 23855, which changed state.
Bug 23855 Summary: loop header should also be pulled out of the inner loop too
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23855
What|Removed |Added
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23970
--- Comment #2 from Andrew Pinski ---
We are able to do the LIM at -O3 which enables loop unswitching.
I wonder if there is a way to enable a limited form of loop unswitching for -O2
where one branch of the loop to unswitch is empty.
--
What|Removed |Added
CC||rakdver at atrey dot karlin
||dot mff dot cuni dot cz
http://gc
--- Additional Comments From rakdver at gcc dot gnu dot org 2005-09-20
13:33 ---
k*stridev?[2] cannot be moved more at the moment. The loops looks like
for (k = ...)
for (j = ...)
{
if (i >= i1)
continue;
do
{
tmp = k * stridevx[2];
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=23970
--- Comment #3 from Richard Biener ---
Unswitching does this as a separate transform now, the "hoist guards"
transform.
It's even done completely separate now:
unsigned int
tree_ssa_unswitch_loops (function *fun)
{
bool changed_unswitch = f