Skip to content
This repository has been archived by the owner on Jan 23, 2023. It is now read-only.

Jit: fix issue with single-def type propagation #10867

Merged
merged 1 commit into from
Apr 11, 2017

Conversation

AndyAyersMS
Copy link
Member

To avoid overly aggressive type propagation when there are multiple
reaching definitions, only propagate types to single-IL-def locals
when the defining value comes from the same basic block as the store.
We check this conservatively by insisting that the block's entry stack
be empty.

Added a test case where the jit will improperly devirtualize without
such a check.

Closes #10858.

To avoid overly aggressive type propagation when there are multiple
reaching definitions, only propagate types to single-IL-def locals
when the definiting value comes from the same basic block as the store.
We check this conservatively by insisting that the block's entry stack
be empty.

Added a test case where the jit will improperly devirtualize without
such a check.

Closes #10858.
@AndyAyersMS
Copy link
Member Author

Should also fix various x86 desktop assertion failures; still verifying this.

7 diffs in the framework jit-diff set. They are all cases where we're now overly conservative, eg the stack is non-empty going into the block but the value that reaches the single-IL-def comes from within the block.

Copy link

@JosephTremoulet JosephTremoulet left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@AndyAyersMS
Copy link
Member Author

Desktop tests also look good.

@AndyAyersMS AndyAyersMS merged commit 98bb73b into dotnet:master Apr 11, 2017
@AndyAyersMS AndyAyersMS deleted the FixSingleDefBug branch April 11, 2017 21:31
@karelz karelz modified the milestone: 2.0.0 Aug 28, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants