This option enables the efficient elimination of unused functions, and on the ARMv4T architecture, enables reduction of compilation required for interworking.
You can perform multiple compilations using the same feedback file. The compiler places each unused function identified in the feedback file into its own ELF section in the corresponding object file.
The feedback file contains information about a previous build. Because of this:
The feedback file might be out of date. That is, a function previously identified as being unused might be used in the current source code. The linker removes the code for an unused function only if it is not used in the current source code.
For this reason, eliminating unused functions using linker feedback is a safe optimization, but there might be a small impact on code size.
The usage requirements for reducing compilation required for interworking are more strict than for eliminating unused functions. If you are reducing interworking compilation, it is critical that you keep your feedback file up to date with the source code that it was generated from.
You have to do a full compile and link at least twice to get the maximum benefit from linker feedback. However, a single compile and link using feedback from a previous build is usually sufficient.