JIT: Remove BBJ_RETURN loop cloning quirk#96555
Conversation
With the new loop representation there will never be any `BBJ_RETURN` blocks in loops we are cloning -- add an assert for this. Then remove the quirk that avoids cloning loops when the old loop cloning would create too many `BBJ_RETURN` blocks. Large size wise regressions are expected due to new cloning.
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsWith the new loop representation there will never be any Large size wise regressions are expected due to new cloning.
|
|
cc @dotnet/jit-contrib PTAL @BruceForstall Large size regressions. Looks like this check was preventing some loop cloning in The check is based on Considering loop L00 to clone for optimizations.
Loop cloning: rejecting loop L00. It has 0 returns; if added to previously existing -4 returns, it would exceed the limit of 4.In the diff we no longer reject it. Naturally these changes are going to allow more loop cloning, and without profitability heuristics that's going to result in size/TP regressions. I think it means we should prioritize adding profitability heuristics as part of .NET 9. Luckily #8558 is already in 9.0 and tracks that. |

With the new loop representation there will never be any
BBJ_RETURNblocks in loops we are cloning -- add an assert for this. Then remove the quirk that avoids cloning loops when the old loop cloning would create too manyBBJ_RETURNblocks.Large size wise regressions are expected due to new cloning.