-
Notifications
You must be signed in to change notification settings - Fork 4.9k
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
Handle getting the address of an RVA static correctly in a composite image #55301
Conversation
@dotnet/crossgen-contrib @dotnet/jit-contrib I'd like a review from both the codegen and crossgen groups. |
// where the actual field does not move from the original file | ||
assert(!varTypeIsGC(lclTyp)); | ||
op1 = gtNewOperNode(GT_IND, TYP_I_IMPL, op1); | ||
op1->gtFlags |= GTF_IND_INVARIANT | GTF_IND_NONFAULTING; |
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.
there is also GTF_IND_NONNULL
that can be used for indirects which return something non-null(0) always
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.
Looks great to me, thanks for fixing this!
@EgorBo The build fails due to an assert in the JIT when targeting some platforms. I've looked in particular at the failure on Windows x86, and it appears to be what I think is a benign assert, but I'm not sure what the appropriate tweak should be to silence it. With a Windows x86 Debug build, run a command like Could you give me some advice? |
@BruceForstall I can't disable the test to shut up the issue, as it prevents the build from succeeding. Do you have advice on what to do with the actual jit to silence the assert, or do I just need to wait for a bit to get this fixed? Basically, is the PR that @tannergooding wrote going to fix this soon, or is this yet another issue to chase? |
No. There ended up being issues with the PR that I'm not going to have time to investigate before 6.0 wraps up.
|
@davidwrighton Does the failure only exist with this change, or does it also exist in the baseline? I'm afraid you might just have to wait, and the JIT team might need to pick up @tannergooding 's change and push if further. |
I've said it before but will repeat myself: I think we should just disable this assert. I can't remember it ever catching an actual bug. |
Maybe that's the best option we have today? Note there are two similar assertions, both causing issues today: runtime/src/coreclr/jit/emitxarch.cpp Lines 12192 to 12200 in ac53e65
and: runtime/src/coreclr/jit/emitxarch.cpp Lines 11884 to 11887 in ac53e65
|
@BruceForstall this failure is new with my change. It tweaks the code to have an extra indirection, and produces the new error. I'm going to update my PR to comment out the assert, with a reference to this PR. |
…image - Since composite images have the original RVA statics in the original files, use the value from there - This required re-enabling the ability of getFieldAddress to return an indirection - And adding some new processing for the fixup as needed
8d112ac
to
2323cf7
Compare
…mposite image (dotnet#55301)" This reverts commit e3d319b. It breaks the crossgen2 outerloop runs
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.
Reviewing positively, to allow a revert
… in a composite image (dotnet#55301)" (dotnet#55713)" This reverts commit 87fcf6e.
Fixes composite mode compilation of src/tests/Directed/rvastatics/RVAOrderingTest.ilproj