[2.079] Only emit interface vtables in the declaring module#2647
[2.079] Only emit interface vtables in the declaring module#2647kinke merged 4 commits intoldc-developers:merge-2.079from
Conversation
|
Fixes the linking errors on OSX. On 64-bit OSX, the C++ mangling of 64-bit integers still needs to be figured out ( |
e946cba to
333f75c
Compare
|
OSX mangling should be fixed now, incl. self-compilability of 2.079. The breaking change affects Additionally, it looks as if a C++ |
|
I'm not the only one finding the mangling change at least problematic: |
Wow. :( That would mean we lost C++ interop (modifying C++ is unacceptable in many cases). Unacceptable if you ask me. |
|
Absolutely. Even when fixing |
|
The test confirms the regression on 64-bit macOS. It also shows that 32-bit |
|
We are already ABI incompatible with DMD and GDC, iirc, so I'm fine with fixing the mangling ourselves if upstream dfrontend doesn't want to. |
|
Walter doesn't seem to acknowledge the I reverted the mangling and added aliases [I'll split off the mangling things as separate PR. I just abused this PR here as the interface vtable emission fix is a prerequisite for running the CI tests on macOS.] |
Making it obvious which of the two operations is performed, reducing call args and making sure a global isn't defined multiple times via `defineGlobal()`. The only [intended] functional change is in gen/trycatchfinally.cpp, where I inserted a check for an existing __cpp_type_info_ptr global when emitting a catch for C++ exceptions.
And aid in debugging by outputting the IR type names if there are type mismatches when declaring global variables.
|
So DMD's |
Yep it will. With the magic struct -> enum change, the implicit conversion problem will be gone as well. Previously, no normal D size_t would have been implicitly converted to a
That's the status quo for DMD 2.079.0 on 64-bit macOS (unless you roll your own magic |
No description provided.