On Wednesday, 14 January 2015 at 13:32:53 UTC, Mike wrote:


Well, I was working a reduced test case and found that it has
something to do with my trace.d file here:
https://github.com/JinShil/stm32f42_discovery_demo/blob/master/source/stm32f42/trace.d

If I add a trace.writeLine("x") in my program, then the binary
goes from 2K to 130K.  Anyway, it appears it has nothing to do
with TypeInfo.  I'll continue to try to reduce.

Thanks for the help and useful information.

Mike

Final update:

The problem was with this function here:

void write(A...)(in A a)
{
     foreach(t; a)
     {
         write(t);
     }
}

I think that since this is an open-ended template and I could
potentially pass any type to it, the compiler thinks it should
remember the TypeInfo.name values for every type in my program.

However, since I only ever used write("x") in my program, I
expect the linker to be able to see that those TypeInfo.name
values are never used, and strip them out when compiled with
-fdata-sections and -Wl,--gc-sections.  Perhaps it couldn't
because of the way the data is packed.

Anyway, I guess I'll see about modifying my code to be less
flexible in order to reign this data in.

Suggestions are welcome.

Mike

Reply via email to