Hitchikers Guide to Porting Phobos / D Runtime to other architectures

Mike none at none.com
Tue Jan 7 00:20:46 PST 2014


On Monday, 6 January 2014 at 16:25:08 UTC, David Nadlinger wrote:
> On Monday, 6 January 2014 at 12:22:37 UTC, Mike wrote:
>> If any compiler implementers are reading this, please try to 
>> generate only code that is used by the program being compiled.
>>  I need to get this sorted out and submit some bug/enhancement 
>> requests to the compiler writers, but I first need to 
>> understand things better so I can articulate it well.
>
> The issue with ModuleInfo is that you can actually query the 
> list of all loaded D modules at runtime (ModuleInfo.opApply(), 
> mainly for things like running static constructors, unit tests, 
> Object.factory, …). So, even if your module is not using static 
> constructors or unit tests, you can't just not emit the 
> ModuleInfo in general.

I think it's OK to emit code that is not used, as long as the 
linker can safely strip it out if it can't find a path to it.  
I'm still a novice with the GNU toolchain, but I believe ld does 
this this with --gc-sections in collusion with GCC's 
-ffunction-sections and -fdata-sections.

A recent experiment with GDC showed that if unused symbols are 
stripped out by the linker, some of the used symbols get 
dislocated (at least that's what I think is happening).  
Discussion here 
(http://forum.dlang.org/post/wrekpqefiswstqhhrhoh@forum.dlang.org).

My experiments with LDC last month seemed require a huge amount 
snowballing implementations just to compile, when they were all 
just going to get stripped out by the linker with --gc-sections 
anyway.

Again, I would like to submit enhancement/bug reports for these 
things, but I need to learn more about what's actually going on, 
and what's actually needed by D, so I my report is meaningful and 
actionable.

> In theory, LDC allows you to selectively disable ModuleInfo 
> generation for some modules 
> (http://wiki.dlang.org/LDC-specific_language_changes), but it 
> looks like the pragmas actually don't have any effect in 
> current LDC2 builds 
> (https://github.com/ldc-developers/ldc/issues/571).
>
> David

I actually wasn't aware of these features. These will be quite 
helpful when implemented.  Thank you.


More information about the Digitalmars-d mailing list