Skip to content

[release/9.0-rc1] JIT: Remove implicit fallthrough assert in bool optimizer #106542

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

Merged
merged 1 commit into from
Aug 16, 2024

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Aug 16, 2024

Backport of #106492 to release/9.0-rc1

/cc @amanasifkhalid

Customer Impact

  • Customer reported
  • Found internally

Recent refactors of the JIT's flowgraph implementation removed various invariants. The assert being removed by this fix enforces an invariant which no longer exists, and thus can fire for valid state. This failure was hit by Antigen, one of our fuzz test generators.

Regression

  • Yes
  • No

#97488 probably made this assert overzealous. That change removed logic maintaining the false target of a conditional basic block as its next block. This means it is now possible for a conditional block to be the last block in a method if both of its successors are behind it.

Testing

Triggering this assert required a pretty specific code pattern, such that a method would end with a loop with an exit condition that can be optimized, and flowgraph churn in earlier JIT phases would keep the conditional block at the end of the method. There isn't any new behavior to test here.

Risk

Low. The fix simply removes a debug assert to keep CI clean. Release builds were unaffected by this assert.

@ghost ghost added the area-CodeGen-coreclr CLR JIT compiler in src/coreclr/src/jit and related components such as SuperPMI label Aug 16, 2024
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
Member

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

@carlossanlop
Copy link
Contributor

We have a very short window for merging RC1 backports. Please send the email to Tactics requesting approval and get a code review sign-off from area owners ASAP.

@amanasifkhalid
Copy link
Member

amanasifkhalid commented Aug 16, 2024

@carlossanlop is it not enough to get approval from @jeffschwMSFT for RC1 backports (edit: answered offline)? ping @AndyAyersMS

@amanasifkhalid amanasifkhalid added the Servicing-consider Issue for next servicing release review label Aug 16, 2024
@jeffschwMSFT
Copy link
Member

all post snap changes require tactics approval

@carlossanlop carlossanlop added Servicing-approved Approved for servicing release and removed Servicing-consider Issue for next servicing release review labels Aug 16, 2024
@carlossanlop carlossanlop merged commit 2be016b into release/9.0-rc1 Aug 16, 2024
92 of 98 checks passed
@carlossanlop carlossanlop deleted the backport/pr-106492-to-release/9.0-rc1 branch August 16, 2024 18:02
@github-actions github-actions bot locked and limited conversation to collaborators Sep 16, 2024
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 Servicing-approved Approved for servicing release
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants