-
Notifications
You must be signed in to change notification settings - Fork 4.8k
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
JIT: Fix some cases using BasicBlock::bbFallsThrough
#97699
Conversation
`bbFallsThrough` still returns true for `BBJ_COND`; we have a couple of places using it as a "control flows from prev block" check, which is wrong after dotnet#97488.
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue Details
|
else | ||
{ | ||
assertionsOut = pred->bbAssertionOut; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Small drive-by fix for some UB here (in the useCondAssertions
case we were accessing an inactive union member).
Diff results for #97699Assembly diffsAssembly diffs for osx/arm64 ran on linux/x64Diffs are based on 2,270,861 contexts (932,669 MinOpts, 1,338,192 FullOpts). MISSED contexts: base: 1 (0.00%), diff: 9 (0.00%) Overall (+684 bytes)
FullOpts (+684 bytes)
Assembly diffs for windows/arm64 ran on linux/x64Diffs are based on 2,341,109 contexts (938,449 MinOpts, 1,402,660 FullOpts). MISSED contexts: base: 0 (0.00%), diff: 8 (0.00%) Overall (+668 bytes)
FullOpts (+668 bytes)
Assembly diffs for windows/x64 ran on linux/x64Diffs are based on 2,512,204 contexts (997,391 MinOpts, 1,514,813 FullOpts). MISSED contexts: base: 0 (0.00%), diff: 8 (0.00%) Overall (+630 bytes)
FullOpts (+630 bytes)
Details here Throughput diffsThroughput diffs for osx/arm64 ran on windows/x64Overall (-0.01% to +0.00%)
FullOpts (-0.01% to +0.00%)
Throughput diffs for windows/arm64 ran on windows/x64Overall (-0.01% to +0.00%)
FullOpts (-0.01% to +0.00%)
Throughput diffs for windows/x64 ran on windows/x64Overall (-0.01% to +0.00%)
FullOpts (-0.01% to +0.00%)
Details here |
Diff results for #97699Assembly diffsAssembly diffs for linux/arm ran on windows/x86Diffs are based on 2,239,391 contexts (829,328 MinOpts, 1,410,063 FullOpts). MISSED contexts: 71,273 (3.08%) Overall (+52 bytes)
FullOpts (+52 bytes)
Assembly diffs for windows/x86 ran on windows/x86Diffs are based on 2,293,495 contexts (839,658 MinOpts, 1,453,837 FullOpts). MISSED contexts: 1 (0.00%) Overall (+46 bytes)
FullOpts (+46 bytes)
Details here Assembly diffs for linux/arm64 ran on windows/x64Diffs are based on 2,507,310 contexts (1,007,092 MinOpts, 1,500,218 FullOpts). MISSED contexts: base: 0 (0.00%), diff: 8 (0.00%) Overall (+584 bytes)
FullOpts (+584 bytes)
Assembly diffs for linux/x64 ran on windows/x64Diffs are based on 2,517,901 contexts (991,070 MinOpts, 1,526,831 FullOpts). MISSED contexts: base: 0 (0.00%), diff: 8 (0.00%) Overall (+567 bytes)
FullOpts (+567 bytes)
Details here Throughput diffsThroughput diffs for linux/arm64 ran on linux/x64Overall (-0.01% to -0.00%)
FullOpts (-0.01% to -0.00%)
Throughput diffs for linux/x64 ran on linux/x64Overall (-0.01% to -0.00%)
FullOpts (-0.01% to -0.00%)
Details here |
cc @dotnet/jit-contrib PTAL @amanasifkhalid Diffs. A few cases where we now recognize an induction due to |
Thanks for the fix!
My hope is that we can get rid of |
bbFallsThrough
still returns true forBBJ_COND
; we have a couple of places using it as a "control flows from prev block" check, which is wrong after #97488.Should fix the test failures I'm seeing over in #97182.