[U-Boot] [PATCH 62/71] serial: spl: Implement empty functions for SPL

Marek Vasut
2012-09-18T19:25:21Z

Dear Tom Rini,

> On 09/18/12 12:19, Marek Vasut wrote:
> > Dear Tom Rini,
> >
> >> On 09/18/12 11:33, Marek Vasut wrote:
> >>> Dear Scott Wood,
> >>
> >> [snip]
> >>
> >>>> I think I got some wires crossed and was thinking about
> >>>> printf/puts. We want those to be optimized away at compile
> >>>> time (not pointed to a stub at link time) on an SPL that has
> >>>> no output support, but once that's done the low level serial
> >>>> functions shouldn't be referenced anymore, right?
> >>>
> >>> But if you point them to stubs, that's OK. The compiler will GC
> >>> these useless stubs anyway. But wait, we're getting to LTO
> >>> here, right?
> >>>
> >>> So the safest bet really is macro in serial.h ?
> >>
> >> Due to the gcc bug I've mentioned before, yes. Dummy functions
> >> will, I bet, keep the string constants around. do {} while(0)
> >> will drop them out entirely.
> >
> > Damn, not much gain on m28evk (with C functionss/with macros),
> > using gcc 4.7.1:
> >
> > Configuring for m28evk board... text data bss dec hex
> > filename 418994 7780 288632 715406 aea8e ./u-boot 11773 788
> > 12 12573 311d ./spl/u-boot-spl
> >
> > Configuring for m28evk board... text data bss dec hex
> > filename 418998 7780 288628 715406 aea8e ./u-boot 11765 788
> > 12 12565 3115 ./spl/u-boot-spl
>
> Right, didn't have many strings. But do you see what I mean now about
> not needing this patch as it stands currently?

No, I don't. If I remove this patch, the build breaks either because serial_* is
defined twice or not defined at all.

Best regards,
Marek Vasut