Using Function Order Lists, Function Grouping,
Function Ordering, and Data Ordering Optimizations
Instead of doing a full multi-file interprocedural build of your application by using the compiler option
[Q]ipo, you can obtain some of the benefits by having the compiler and linker work together to make global decisions about where to place the
functionsand data in your application. These optimizations are not supported on
The following table lists each optimization, the type of
functionsor global data it applies to, and the operating systems and architectures that it is supported on.
Supported OS and Architectures
Function Order Lists:Specifies the order in which the linker should link the non-static routines (
functions) of your program. This optimization can improve application performance by improving code locality and reduce paging. Also see Comparison of Function Order Lists and IPO Code Layout.
functionsprocedures and library
functionsonly (not static
Windows: all Intel architectures
Linux: not supported
Function Grouping: Specifies that the linker should place the extern and static routines (
functions) of your program into hot or cold program sections. This optimization can improve application performance by improving code locality and reduce paging.
This option will cause functions to be placed into the linker sections named ".text.hot" and ".text.unlikely." If you are using a custom linker script, you will need to specify memory placement for these sections.