IBM C and C++ Compilers inlines some functions instead of generating a function call for them. Some of these functions are always inlined; others are inlined only when you compile with the optimization option on.
Note: The optimization options are /O or /Oc.
Functions that Are Inlined when
Optimization Is On
When optimization is on (/O+), IBM C and C++ Compilers by default
inlines (generates code instead of a function call) the following
C library functions:
| _clear87 | _status87 | strncmp | wcslen |
| _control87 | strcat | strncpy | wcsncat |
| memchr | strchr | strrchr | wcsncmp |
| memcmp | strcmp | wcscat | wcsncpy |
| memcpy | strcpy | wcschr | wcsrchr |
| memmove | strlen | wcscmp | |
| memset | strncat | wcscpy |
The compiler inlines these functions when you include the appropriate header file that contains the function prototype and the #define and #pragma statements for the function.
If you program in C, you can override the inlining either by undefining the macro or by placing the name of the function in parentheses, thus disabling the preprocessor substitution. The function then remains a function call, and is not replaced by the code. The size of your object module is reduced, but your application program runs more slowly.
Note: The optimize-for-size compiler option (/Oc) also disables the inlining of non-intrinsic functions. It should be /O+ /Oc-.
Functions that Are Always Inlined
The following functions are built-in functions,
meaning they do not have any backing library functions, and are
always inlined:
| abs | _fasin | _fyl2xp1 | _llrotr | _srotl |
| _alloca | _fcos | _f2xm1 | _lrotl | _srotr |
| _crotl | _fcossin | _inp | _lrotr | __sxchg |
| _crotr | _fpatan | _inpd | __lxchg | |
| __cxchg | _fptan | _inpw | _outp | |
| _disable | _fsin | _interrupt | _outpd | |
| _enable | _fsincos | labs | _outpw | |
| fabs | _fsqrt | llabs | _rotl | |
| _facos | _fyl2x | _llrotl | _rotr |
Do not parenthesize the names of these functions.
The built-in functions are all defined in <builtin.h>, in addition to the standard header definitions.