I'd like to find unused functions in a codebase - including across compilations units. I'm using gcc as my compiler.
Here's an example:
foo.c (assume appropriate foo.h):
void foo() { .... } void bar() { .... } main.c:
#include <stdio.h> #include "foo.h" int main(void) { bar(); return 0; } In this example, I'd like to get warned about foo() not being used.
There is the -Wunused-function gcc option:
-Wunused-functionWarn whenever a static function is declared but not defined or a non-inline static function is unused. This warning is enabled by -Wall.
but it's only for static functions - it won't produce a warning on the example above.
I'll also accept suggestions of tools/scripts/other compilers that can do this for me - though I'd prefer to stick with gcc if possible.
-fwhole-program; perhaps that'll give you additional warnings.