Skip to content
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

[JIT] Update loop integrity checks #71084

Closed
AndyAyersMS opened this issue Jun 21, 2022 · 1 comment · Fixed by #71184
Closed

[JIT] Update loop integrity checks #71084

AndyAyersMS opened this issue Jun 21, 2022 · 1 comment · Fixed by #71184
Assignees
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Milestone

Comments

@AndyAyersMS
Copy link
Member

Update fgDebugCheckLoopTable to reflect the full set of canonicalization rules:

  • no two loops have a common top
  • no loop head is the bottom of some other loop

and address any violations that come up.

Also, maybe (though more challenging):

  • no loop top has a dominated pred from outside the loop (for entry == top cases)
  • no loop entry has a dominated pred from outside the loop (not enforced yet, for entry != top cases)
@dotnet-issue-labeler dotnet-issue-labeler bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Jun 21, 2022
@AndyAyersMS AndyAyersMS self-assigned this Jun 21, 2022
@ghost ghost added the untriaged New issue has not been triaged by the area owner label Jun 21, 2022
@AndyAyersMS AndyAyersMS added this to the 7.0.0 milestone Jun 21, 2022
@ghost
Copy link

ghost commented Jun 21, 2022

Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch
See info in area-owners.md if you want to be subscribed.

Issue Details

Update fgDebugCheckLoopTable to reflect the full set of canonicalization rules:

  • no two loops have a common top
  • no loop head is the bottom of some other loop

and address any violations that come up.

Also, maybe (though more challenging):

  • no loop top has a dominated pred from outside the loop (for entry == top cases)
  • no loop entry has a dominated pred from outside the loop (not enforced yet, for entry != top cases)
Author: AndyAyersMS
Assignees: AndyAyersMS
Labels:

area-CodeGen-coreclr

Milestone: -

@ghost ghost removed the untriaged New issue has not been triaged by the area owner label Jun 21, 2022
AndyAyersMS added a commit to AndyAyersMS/runtime that referenced this issue Jun 23, 2022
Add loop table checking to the post-phase list, conditional on whether the
table is expected to be valid.

Declare that the table is valid from the end of the find loops phase to the
end of the optimization phases.

Add checks that sibling loops are fully disjoint, no child shares top with its
parent, and all top-entry loops have at most one non-loop backedge.

Closes dotnet#71084.
@ghost ghost added the in-pr There is an active PR which will close this issue when it is merged label Jun 23, 2022
AndyAyersMS added a commit that referenced this issue Jun 28, 2022
Add loop table checking to the post-phase list, conditional on whether the
table is expected to be valid.

Declare that the table is valid from the end of the find loops phase to the
end of the optimization phases.

Add checks that sibling loops are fully disjoint, no child shares top with its
parent, and all top-entry loops have at most one non-loop backedge.

Expand set of phases that opt into the "common" poost phase checks
to include all those between find loops and hoisting.

Closes #71084.
Closes #71071.
@ghost ghost removed the in-pr There is an active PR which will close this issue when it is merged label Jun 28, 2022
@ghost ghost locked as resolved and limited conversation to collaborators Jul 29, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant