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: build pred lists before patchpoint expansion #81196

Merged

Conversation

AndyAyersMS
Copy link
Member

Move pred list building 3 phases earlier. It now happens just after instrumentation (or importation if we're not instrumenting) and just before expanding patchpoints.

Revise the patchpoint, indirect call, and post importer cleanup phases to do proper pred list maintenance.

Update the flow checker to handle cases we see when we haven't yet run the post importer cleanup.

Contributes to #80193.

Move pred list building 3 phases earlier. It now happens just after
instrumentation (or importation if we're not instrumenting) and just before
expanding patchpoints.

Revise the patchpoint, indirect call, and post importer cleanup phases
to do proper pred list maintenance.

Update the flow checker to handle cases we see when we haven't yet run
the post importer cleanup.

Contributes to dotnet#80193.
@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 Jan 25, 2023
@ghost ghost assigned AndyAyersMS Jan 25, 2023
@ghost
Copy link

ghost commented Jan 25, 2023

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

Issue Details

Move pred list building 3 phases earlier. It now happens just after instrumentation (or importation if we're not instrumenting) and just before expanding patchpoints.

Revise the patchpoint, indirect call, and post importer cleanup phases to do proper pred list maintenance.

Update the flow checker to handle cases we see when we haven't yet run the post importer cleanup.

Contributes to #80193.

Author: AndyAyersMS
Assignees: AndyAyersMS
Labels:

area-CodeGen-coreclr

Milestone: -

@AndyAyersMS
Copy link
Member Author

@jakobbotsch PTAL
cc @dotnet/jit-contrib

Some minor diffs expected in Tier0 as we may leave blocks out of bbNum order and this perturbs LSRA. Did not seem worthwhile to quirk for this.

@AndyAyersMS
Copy link
Member Author

/azp run runtime-coreclr jitstress, runtime-coreclr libraries-jitstress

@azure-pipelines
Copy link

Azure Pipelines successfully started running 2 pipeline(s).

@AndyAyersMS
Copy link
Member Author

librares jitstress failure seems unrelated

  Starting:    System.Text.Json.Tests (parallel test collections = on, max threads = 2)

Assert failure(PID 28 [0x0000001c], Thread: 37 [0x0025]): obj->GetGCSafeMethodTable ()->HasFinalizer ()
    File: /__w/1/s/src/coreclr/vm/syncblk.cpp Line: 2039
    Image: /root/helix/work/correlation/dotnet

@AndyAyersMS AndyAyersMS merged commit b3689b3 into dotnet:main Jan 26, 2023
@ghost ghost locked as resolved and limited conversation to collaborators Feb 26, 2023
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 this pull request may close these issues.

2 participants