https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94623
--- Comment #24 from Iain Buclaw <ibuclaw at gdcproject dot org> --- (In reply to David Binderman from comment #23) > > Worse than that ? > > It is silently linking with the wrong set of files and producing run time > errors. > > Maybe it would be a good idea to put some code into the linkage process > to make sure linkage only occurs with files the compiler knows about. Modules are not pre-compiled (unlike Go/C++/Fortran?). The only scenario to consider really is the following: gdc: module std.example; int myfunction(int a) pure nothrow {...} ldc: module std.example; int myfunction(int a) pure nothrow @safe {...} If the wrong module is imported, when linking, you'll get a linker error: undefined reference to 'myfunction(int) pure nothrow @safe' As the '@safe' attribute is encoded in the mangled symbol, and that doesn't exist in gdc's libgphobos.a/so