- 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 270
[2.079] Only emit interface vtables in the declaring module #2647
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
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.