3.5.13. Extern inline functions

The ISO C++ Standard requires inline functions to be defined wherever you use them. To prevent the clashing of multiple out-of-line copies of inline functions, the ARM C++ compiler emits out-of-line extern functions in common sections.

Out-of-line inline functions

The compiler emits inline functions out-of-line, in the following cases:

  • The address of the function is taken, for example:


    inline int g() {return 1;}
    int (*fp)() = &g

  • The function cannot be inlined, for example, a recursive function:


    inline int g() {return g();}

  • The heuristic used by the compiler decides that it is better not to inline the function. This heuristic is influenced by -Ospace and -Otime. If you use -Otime, the compiler inlines more functions. You can override this heuristic by declaring a function with __forceinline (see Function storage class qualifiers), for example:


    __forceinline int g() {return 1;}

    You can also use the --forceinline compiler option (see Defining optimization criteria).

Copyright © 2002-2006 ARM Limited. All rights reserved.ARM DUI 0205G
Non-Confidential