3.3.5.2 How Do I Stop An Unused Function Being Removed?

If a C function’s symbol is referenced in hand-written assembly code, the function will never be removed, even if it is not called or has never had its address taken in C code.

To include a reference, create an assembly source file and add this file to your project. You only have to reference the symbol in this file; so the file can contain the following

GLOBAL _myFunc

where myFunc is the C name of the function in question (note the leading underscore in the assembly name, see Equivalent Assembly Symbols). This is sufficient to prevent the function removal optimization from being performed.