-
-
Notifications
You must be signed in to change notification settings - Fork 420
core.stdcpp: Upstream differences between dmd and gdc/ldc druntimes #3552
Conversation
Thanks for your pull request, @ibuclaw! Bugzilla referencesYour PR doesn't reference any Bugzilla issue. If your PR contains non-trivial changes, please reference a Bugzilla issue or create a manual changelog. 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 "master + druntime#3552" |
Added tests that pass with GDC. |
Edit: Added version block for |
DMD's |
Nice! With those, will things still be tied to the |
Yes, though IIUC Clang and GCC are compatible? Probably the only two we care about in terms of movability because Microsoft doesn't use the Itanium ABI. |
- Change destructors from `extern(D)` -> `@weak extern(C++)` - Change CppRuntime_Microsoft `exception.what` from `extern(D)` -> `@weak extern(C++)` - Add `assert(0)` to CppRuntime_Microsoft `exception._Doraise` - Add missing `bad_exception.what` for GenericBaseException - Add `@nogc:` to core.stdcpp.typeinfo - Add `nothrow` to `type_info.before` and `type_info.name` - Mark CppRuntime_Gcc `type_info` as abstract - Add definitions to CppRuntime_Gcc and CppRuntime_Clang `bad_cast.what` and `bad_typeid.what`
Upstreamed:
extern(D)
->@weak extern(C++)
exception.what
fromextern(D)
->@weak extern(C++)
assert(0)
to CppRuntime_Microsoftexception._Doraise
bad_exception.what
for GenericBaseException@nogc:
to core.stdcpp.typeinfonothrow
totype_info.before
andtype_info.name
type_info
as abstractbad_cast.what
andbad_typeid.what
New: Things found to be broken just by adding tests. (Moved to other PRs).
Change CppRuntme_Gcc__class_type_info
fromclass
->extern(C++, class) struct
Add implementation oftypeinfo
for CppRuntime_ClangFix the alignment of_Unwind_Exception
to fix catching exceptions using dwarfeh on x86Add separate implemention ofexception
for CppRuntime_DigitalMars