# Disable Recognition and Expansion of Intrinsic Functions

This content is specific to C++; it does not apply to DPC++.

When recognized, intrinsic functions can get expanded inline or their faster implementation in a library may be assumed and linked in. By default, Inline expansion of intrinsic functions is enabled.

In some cases, disabling this behavior may noticeably improve the size of the produced object or binary.

Options to specify:

Linux* and macOS*: | -fno-builtin
Windows*: | /Oi-

Advantages of this method: | Both the size of the object files and the size of library codes brought into an executable can be reduced.
Disadvantages of this method: | This method can prevent various performance optimizations from happening. Slower standard library implementation will be used. The size of the final executable can be increased in cases when code pulled in statically from a library for an otherwise inlined intrinsic is large.

Notes:

- This option is already the default if you specify option O1.

- You can specify option -nolib-inline to disable inline expansion of standard library or intrinsic functions.

- Depending on code characteristics, this option can sometimes increase binary size.

Parent topic: Methods to Optimize Code Size