Take the following example:
int a (void)
GCC doesn't warn that a() is an unused function.
This is problematic if you remove all calls to a() from your code. Although a() uses itself, GCC should warn that no other function is using it, so that the user could remove it.
This has been fixed in 4.3.0:
t.c:3: warning: 'a' defined but not used