Skip to content

[RyuJit] Decouple igNum from strict layout order#125554

Open
SingleAccretion wants to merge 6 commits intodotnet:mainfrom
SingleAccretion:Emit-IgNumOrder
Open

[RyuJit] Decouple igNum from strict layout order#125554
SingleAccretion wants to merge 6 commits intodotnet:mainfrom
SingleAccretion:Emit-IgNumOrder

Conversation

@SingleAccretion
Copy link
Copy Markdown
Contributor

@SingleAccretion SingleAccretion commented Mar 14, 2026

The ultimate goal here is to remove the single-IG prolog constraint.

Currently, the igNum order matches the linked list order precisely (and thus the final layout order) precisely. It means we cannot generate any IGs "out of order". This change removes this restriction for a subset of IGs, those representing epilogs and funclet prologs, by hiding igNum behind and abstraction of "before [in layout order] / after [in layout order]" APIs. These APIs rely in the linked list to ascertain ordering between out-of-order groups.

Currently this is only exercised under a stress mode which splits all IGs into single-instruction groups. To this end, validation has been performed with this stress mode uncoditionally turned on for all methods [and all eligible IGs]:

  1. All diffs have been validated to be expected.
  2. Stress failures have also been investigated. The first one is a strange Helix issue with missing console logs, where the uploaded test file shows all tests having passed. The second is an interesting x86 GCStress timeout. I have run the failing test without the timeout and it passes (...after about an hour...), both before and after this change.
; The x86 timed-out test
23:57:11.640 Running test: async/returns/returns/returns.dll
App Exit Code: 259
Expected: 100
Actual: 259
END EXECUTION - FAILED
FAILED

Without stress, this is a zero-diff change since all our epilogs and funclet prologs fit into a single IG currently.

@github-actions github-actions bot added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Mar 14, 2026
@dotnet-policy-service dotnet-policy-service bot added the community-contribution Indicates that the PR has been added by a community member label Mar 14, 2026
@dotnet-policy-service
Copy link
Copy Markdown
Contributor

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

@EgorBo
Copy link
Copy Markdown
Member

EgorBo commented Mar 23, 2026

/azp list

@azure-pipelines
Copy link
Copy Markdown

CI/CD Pipelines for this repository:

@EgorBo
Copy link
Copy Markdown
Member

EgorBo commented Mar 23, 2026

/azp run runtime-coreclr jitstress, runtime-coreclr gcstress0x3-gcstress0xc, runtime-coreclr gcstress-extra

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 3 pipeline(s).

@SingleAccretion
Copy link
Copy Markdown
Contributor Author

@dotnet/jit-contrib

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI community-contribution Indicates that the PR has been added by a community member

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants