Skip to content

JIT struct work planned for .NET 8 #76931

Closed

Description

@jakobbotsch

This issue captures the planned work items for .NET 8 with respect to struct improvements. Smaller workitems that the larger workitems depend on may also be tracked here. This list is expected to change throughout the release cycle according to ongoing planning and discussions, with possible additions and subtractions to the scope.

Planned for .NET 8

Q4 2022

Jan-Mar 2023

Apr-Jun 2023

See #76928.

Future/Interesting

Activity

  1. ghost added
    untriagedNew issue has not been triaged by the area owner
    on Oct 12, 2022
  2. added
    User StoryA single user-facing feature. Can be grouped under an epic.
    area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI
    and removed
    untriagedNew issue has not been triaged by the area owner
    on Oct 12, 2022
  3. added this to the 8.0.0 milestone on Oct 12, 2022
  4. jakobbotsch commented on Oct 12, 2022

    @jakobbotsch
    MemberAuthor

    cc @dotnet/jit-contrib

  5. SingleAccretion commented on Oct 12, 2022

    @SingleAccretion
    Contributor

    remove existing dependent promotion

    This would imply teaching liveness to work with parts of non-promoted aggregates (this case is the only benefit of PROMOTION_TYPE_DEPENDENT as it exists today, AFAIK).

    Struct SSA

    What kind of enhancements?

    #68797

    Note this is just an odd limitation of the current scheme. It can easily be lifted by "skipping" all trivial struct wrappers, not just those that ultimately simplify down to a primitive.

  6. jakobbotsch commented on Oct 12, 2022

    @jakobbotsch
    MemberAuthor

    This would imply teaching liveness to work with parts of non-promoted aggregates (this case is the only benefit of PROMOTION_TYPE_DEPENDENT as it exists today, AFAIK).

    The idea (hope) would be that the new promotion pass would create IR that never needed DNER and then dependent promotion could be replaced by the general promotion. I'm sure lots of tuning and work would be required here.

    Struct SSA

    What kind of enhancements?

    @AndyAyersMS and I were discussing this a while ago for various copy prop/promotion reasons. Also, some SSA forms allow representing some forms of aliasing, which could be interesting in relation to partial lifetime promotion. This one is probably pretty out there though.
    Another thing I talked with Andy about recently is going into SSA form during import to let the inliner have SSA form at its disposal. But it does not seem very realistic given all the code we have that would need to be updated, that's why it's not under any immediate plans.

    #68797

    Note this is just an odd limitation of the current scheme. It can easily be lifted by "skipping" all trivial struct wrappers, not just > those that ultimately simplify down to a primitive.

    Interesting. I guess you quickly hit the 4 field limit though, but I guess we could look into if it would make sense to raise this limit in some cases (e.g. to be able to promote Span<T> inside a ref struct).

  7. JulieLeeMSFT commented on Jul 17, 2023

    @JulieLeeMSFT
    Member

    @jakobbotsch, I am closing this as completed. Let's plan remaining items for future or .NET 9.

  8. ghost locked as resolved and limited conversation to collaborators on Aug 17, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

User StoryA single user-facing feature. Can be grouped under an epic.area-CodeGen-coreclrCLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI

Type

No type

Projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions