Skip to content

Conversation

@amanasifkhalid
Copy link
Contributor

Move most of the nested iterator class logic in PredEdgeList/PredBlockList to a generic base class, and implement subclasses that specify the yield type (flow edge or basic block) and whether edits are allowed. This allows us to add a pred edge iterator that tolerates edits with minimal code duplication.

@ghost ghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Dec 31, 2024
@dotnet-policy-service
Copy link
Contributor

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

@amanasifkhalid
Copy link
Contributor Author

From the TP diffs, I suspect MSVC isn't devirtualizing the operator* calls, though it probably makes sense to just move this method to the subclasses entirely, and remove the IteratorType template variable.

@amanasifkhalid
Copy link
Contributor Author

cc @dotnet/jit-contrib, @AndyAyersMS PTAL. No diffs. Thanks!

@amanasifkhalid amanasifkhalid merged commit c3445c7 into dotnet:main Jan 6, 2025
104 of 108 checks passed
@amanasifkhalid amanasifkhalid deleted the pred-iterators branch January 6, 2025 15:41
@github-actions github-actions bot locked and limited conversation to collaborators Feb 6, 2025
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