Criteria for Inline Function Expansion
Once the criteria are met, the compiler picks the routines whose inline
expansion will provide the greatest benefit to program performance. The
inlining heuristics used by the compiler differ, based on whether or not
you use profile-guided optimizations (-prof_use).
When you use profile-guided optimizations with -ip
or -ipo[value], the compiler uses the following
- The default heuristic focuses on the most frequently
executed call sites, based on the profile information gathered for the
- By default, the compiler will not inline functions
with more than 230 intermediate statements. You
can change this value by specifying the option -Qoption,c,-ip_ninl_max_stats=new_value.
is a higher limit for functions declared by the user as inline
- The default inline heuristic will stop inlining when
direct recursion is detected.
- The default heuristic will always inline very small
functions that meet the minimum inline criteria.
- Default for ItaniumŪ-based applications: ip_ninl_min_stats=15.
- Default for IA-32 applications: ip_ninl_min_stats=7.
This limit can be modified with the option -Qoption,c,-ip_ninl_min_stats=new_value.
If you do not use profile-guided optimizations with -ip
or -ipo[value], the compiler uses less
aggressive inlining heuristics:
- Inline a function if the inline expansion will not
increase the size of the final program.
- Inline a function if it is declared with the inline or __inline keywords.