-
Notifications
You must be signed in to change notification settings - Fork 5k
Do not retype small locals in FIELD_LIST
s on x86
#74030
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
Do not retype small locals in FIELD_LIST
s on x86
#74030
Conversation
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch Issue DetailsThis is not correct for normalize-on-load register candidates. Fixes #73951.
|
1b6740b
to
29c8bb8
Compare
SPMI failures look pre-existing. @dotnet/jit-contrib |
This breaks the assumption that all LCL_VAR uses of such locals, when typed small, are normalized (and equivalent to each other). Instead, explicitly check for legality of widening the loads in LSRA and codegen.
The load variant in codegen now has double purpose.
29c8bb8
to
1a344dd
Compare
@SingleAccretion When I run the new unit test locally, it passes even without your fix. I'm on 676a6bb Also, I notice when building the test locally I get a warning:
I don't see this in the CI build, but maybe they suppress all warnings? |
Hmm, that is very strange. I don't see any nullability warnings locally:
Certainly, I would expect our test built to globally disable nullability. And the test does fail without and pass with the fix:
There is a detail in the test (the original Fuzzlyn code from which it was adapted also has this property) that to fail it needs to read some random bits from the stack, so perhaps it could be influenced by the environment...? (But it does fail for me consistently, FWIW) |
@BruceForstall please backport this to 7.0 once all tests pass. |
I was able to (finally) reproduce the baseline failure and diff code non-failure. |
/backport to release/7.0 |
Started backporting to release/7.0: https://github.com/dotnet/runtime/actions/runs/2982283022 |
This is not correct for normalize-on-load register candidates.
Fixes #73951.
Fixes #74562.
A tiny regression on x86, due to using extending moves in more cases.