
Hi Mike,
On Mon, Oct 31, 2011 at 3:37 PM, Mike Frysinger vapier@gentoo.org wrote:
On Monday 31 October 2011 17:49:58 Simon Glass wrote:
On Mon, Oct 31, 2011 at 2:15 PM, Tabi Timur-B04825 wrote:
On Sun, Oct 30, 2011 at 7:54 PM, Mike Frysinger wrote:
-static void print_num(const char *, ulong); +__maybe_unused +static void print_num(const char *name, ulong value) +{
- printf("%-12s= 0x%08lX\n", name, value);
+}
Will the linker remove the functions from the binary if they are unusued?
If built with -ffunction-sections and --gc-sections,, then the linker can do this sort of thing. Otherwise it can't, but the compiler can. I just tested Mike's code on my ARM compiler to make sure and it happily removed print_eth() when it was not used.
i don't think you need function-sections to make this happen. since it is marked "static", gcc should do DCE on it. the __maybe_unused markings is just to kill off any warnings about the func not being used (which might occur in the #ifdef jungle below). that attribute does not tell gcc to retain the function even if it isn't referenced in this file (as far as gcc can tell). -mike
That's right, you don't need function-sections for the compiler to eliminate the code - my point was that the linker can't do this sort of thing...luckily it doesn't need to.
There might be an option to control this, a bit like -fkeep-static-consts, but I can't see it. Can't see it being very useful anyway.
Regards, Simon