Feedback from the linker to the compiler enables efficient elimination of unused functions.

Procedure

Compile your source code.

Use the linker option --feedback=filename to create
a feedback file.

Use the linker option --feedback_type to control which feedback the
linker generates.

By default, the linker generates feedback to eliminate unused functions. This is
equivalent to --feedback_type=unused,noiw. The linker can also generate
feedback to avoid compiling functions for interworking that are never used in an
interworking context. Use the linker option --feeback_type=unused,iw to
eliminate both types of unused function.

Note

Reduction of compilation required for interworking is only applicable to ARMv4T
architectures. ARMv5T and later processors can interwork without penalty.

Re-compile using the compiler option
--feedback=filename to feed the feedback file to the
compiler.

The compiler uses the feedback file generated by the linker to compile the source code in
a way that enables the linker to subsequently discard the unused functions.

Note

To obtain maximum benefit from linker feedback, do a full compile and link at least
twice. A single compile and link using feedback from a previous build is normally
sufficient to obtain some benefit.

Note

Always ensure that you perform a full clean build immediately prior to using the linker
feedback file. This minimizes the risk of the feedback file becoming out of date with
the source code it was generated from.

You can specify the --feedback=filename option even
when no feedback file exists. This enables you to use the same build commands or makefile
regardless of whether a feedback file exists, for example:

The first time you build the application, it compiles normally but the compiler warns you
that it cannot read the specified feedback file because it does not exist. The link
command then creates the feedback file and builds the image. Each subsequent compilation
step uses the feedback file from the previous link step to remove any unused functions
that are identified.