-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Loop alignment: Fix loop size calculation to exclude IG's size that are marked as not aligned #68869
Conversation
Tagging subscribers to this area: @JulieLeeMSFT Issue DetailsAs explained in #68510 (comment), there is a scenario when setting the loop back edge that we know we cannot align a loop and removes the I have added a flag Fixes: #68510
|
Co-authored-by: Wraith <wraith2@gmail.com>
/azp run runtime-coreclr jitstress |
Azure Pipelines successfully started running 1 pipeline(s). |
So, we have several tests that hits the assert I added for testing which means that even today, we mismatch the actual vs. expected padding because of resolution blocks being added in between the loop making |
@dotnet/jit-contrib , @BruceForstall |
Fix dotnet#70143 introduced by dotnet#68869
As explained in #68510 (comment), there is a scenario when setting the loop back edge that we know we cannot align a loop and removes the
IGF_LOOP_ALIGN
flag without fixing theigSize
. That affects theloopSize
calculation depending on if it was done during loop alignment adjustment or during output.Edit:
There were test failures https://dev.azure.com/dnceng/public/_build/results?buildId=1752445&view=results so definitely we
were hitting this scenario, but it was not failing because the loop might be big enough to not align. I have figured out another
way in 3704be5 to track the information of IGs whose align flag was removed instead of
adding
IGF_REMOVED_ALIGN
.#65690: In this case, we had 2 backedges of a loop that was marked for aligned. When we set the 1st backedge, we realize that it is enclosing a loop that is marked for alignment, so we unset the flag of current loop. We visit 2nd backedge and again try to unset the align flag and expect that it was not already unset. I have updated the assert using
removedAlignFlag
to say that either the align flag should be present, or it was present at one point and then we removed it.#65988: We decide to not place
align
instruction in prolog, but we didn't remove the align flag which later causes problem. 2322a67 fixes that.Fixes: #68510, #65690 and #65988