-
-
Notifications
You must be signed in to change notification settings - Fork 606
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
[stable] Fix Bugzilla 24599 - Wrongly elided TypeInfo emission #15868
Conversation
Thanks for your pull request and interest in making D better, @kinke! We are looking forward to reviewing it, and you should be hearing from a maintainer soon.
Please see CONTRIBUTING.md for more information. If you have addressed all reviews or aren't sure how to proceed, don't hesitate to ping us with a simple comment. Bugzilla references
Testing this PR locallyIf you don't have a local development environment setup, you can use Digger to test this PR: dub run digger -- build "stable + dmd#15868" |
1e96faf
to
d182ffb
Compare
if (sd.semanticRun < PASS.semantic3done) | ||
{ | ||
import dmd.semantic3 : semanticTypeInfoMembers; | ||
semanticTypeInfoMembers(sd); |
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.
Is this a sensible place to run sema
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.
We are about to emit the functions here, so we need sema3.
@kinke is there a bugzilla issue for this? Or do you have a test that I can reproduce? I'm kind of surprised that this doesn't break any code at there, since IIRC this was needed to advance work on templating the druntime hooks. |
@RazvanN7: Nope sorry, no issue yet; the problem occurs in a private codebase, and unfortunately one of the largest/most complicated ones at Symmetry, so I'm not exactly looking forward to setting up an involved dustmite session. ;) |
I see. I'm just wondering what's the best way to proceed here. If I merge the revert, I'm gonna have to find a different fix for Issue 23650, but without a test case I risk on breaking your code again. If I don't merge it, your code stays broken. |
I think this can only be properly fixed by re-designing the way struct TypeInfos (and the special TypeInfo member functions) are emitted in DMD, adopting the LDC way (I've changed this some years ago, no more TypeInfo issues since then AFAICT: ldc-developers/ldc#3491). The main change there is that the struct TypeInfo emission has been moved to the codegen/glue layer - whenever the symbol is needed during codegen (so no CTFE usages, or usages in purely speculative contexts), it is emitted into the referencing object file (as a COMDAT, so that the linker folds duplicates across object files), instead of trying to decide whether to add a LDC emits the special TypeInfo member functions ( |
@RazvanN7: Okay, I finally found some time and motivation to dustmite our problem, filing an issue and updating this PR accordingly. |
Reverting dlang#14844, which caused such missing TypeInfos, *and* making sure the special TypeInfo members are fully analyzed and ready for codegen (otherwise hitting an assertion for the real-world project).
[just rebased onto stable to make this part of D v2.110; I was on vacation and missed the merge window] |
Reverting dlang#14844, which caused such missing TypeInfos, *and* making sure the special TypeInfo members are fully analyzed and ready for codegen (otherwise hitting an assertion for the real-world project).
Reverting dlang#14844, which caused such missing TypeInfos, *and* making sure the special TypeInfo members are fully analyzed and ready for codegen (otherwise hitting an assertion for the real-world project).
Reverting dlang#14844, which caused such missing TypeInfos, *and* making sure the special TypeInfo members are fully analyzed and ready for codegen (otherwise hitting an assertion for the real-world project).
Reverting dlang#14844, which caused such missing TypeInfos, *and* making sure the special TypeInfo members are fully analyzed and ready for codegen (otherwise hitting an assertion for the real-world project).
Reverting dlang#14844, which caused such missing TypeInfos, *and* making sure the special TypeInfo members are fully analyzed and ready for codegen (otherwise hitting an assertion for the real-world project).
* Document template instance duplication status as part of its field documentation. (#16643) * Fix Bugzilla 24599 - Wrongly elided TypeInfo emission (#15868) Reverting #14844, which caused such missing TypeInfos, *and* making sure the special TypeInfo members are fully analyzed and ready for codegen (otherwise hitting an assertion for the real-world project). * Reorganize backend build files to match target and make more similar per line (#16672) * Remove redundant suggestions on linker errors (#16711) * Fix bugzilla 24337 - Segfault when printing an int[] cast from a string (#16729) * Add BitFieldStyle.Gcc_Clang_ARM Required for 32-bit ARM, and non-Apple 64-bit ARM targets. The only difference to `Gcc_Clang` is that anonymous and 0-length bit-fields do contribute to the aggregate alignment. Caught by existing proper C interop tests in runnable_cxx/testbitfields.d on such targets. The hardcoded bad tests in runnable/{bitfieldsposix64.c,dbitfieldsposix64.d} however now fail after the fix, on such targets again. * [refactor to `TargetC.contributesToAggregateAlignment(BitFieldDeclaration)` hook] * Fix Bugzilla Issue 24687 - [REG2.110] Cannot cast string-imports to select overload anymore * Also make deprecationSupplemental adhere to error limit (#16779) Co-authored-by: Dennis Korpel <[email protected]> * Fix bugzilla 24699 - [REG2.108] No short-circuit evaluation of mixing template bool argument * Fix bugzilla 24731 - IFTI cannot handle integer expressions (#16822) * Fix Bugzilla Issue 24760 - ICE on variadic after default argument * Fix bugzilla 24790 - -vcg-ast ICE on lowered assign exp (#16914) Co-authored-by: Dennis Korpel <[email protected]> * Fix bugzilla 24764 - ICE when -vcg-ast prints imported invariant (#16917) Co-authored-by: Dennis Korpel <[email protected]> * Fix bugzilla 24431 - dmd -vcg-ast crashes printing failed template in… (#16916) --------- Co-authored-by: Richard (Rikki) Andrew Cattermole <[email protected]> Co-authored-by: Martin Kinkelin <[email protected]> Co-authored-by: Dennis <[email protected]> Co-authored-by: Martin Kinkelin <[email protected]> Co-authored-by: Martin Kinkelin <[email protected]> Co-authored-by: RazvanN7 <[email protected]> Co-authored-by: Dennis Korpel <[email protected]> Co-authored-by: Dennis Korpel <[email protected]>
Reverting #14844, which caused such missing TypeInfos, and making sure the special TypeInfo members are fully analyzed and ready for codegen (otherwise hitting an assertion).
Currently just checking if it breaks CI somewhere.