inline_bottom_up

Controls the bottom-up function inlining method.

Syntax
#pragma inline_bottom_up on | off | reset
  
Remarks

Bottom-up function inlining tries to expand up to eight levels of inline leaf functions. The maximum size of an expanded inline function and the caller of an inline function can be controlled by the pragmas shown in Maximum Complexity of an Inlined Function and Maximum Complexity of a Function that Calls Inlined Functions.

Listing 1. Maximum Complexity of an Inlined Function
// Maximum complexity of an inlined function
#pragma inline_max_size( max )          // default max == 256
Listing 2. Maximum Complexity of a Function that Calls Inlined Functions
// Maximum complexity of a function that calls inlined functions
#pragma inline_max_total_size( max )    // default max == 10000

where max loosely corresponds to the number of instructions in a function.

If you enable this pragma, the compiler calculates inline depth from the last function in the call chain up to the first function that starts the call chain. The number of functions the compiler inlines from the bottom depends on the values of inline_depth , inline_max_size , and inline_max_total_size . This method generates faster and smaller source code for some (but not all) programs with many nested inline function calls.

If you disable this pragma, top-down inlining is selected, and the inline_depth setting determines the limits for top-down inlining. The inline_max_size and inline_max_total_size pragmas do not affect the compiler in top-down mode.

Related information
access_errors
always_inline
arg_dep_lookup
ARM_conform
ARM_scoping
array_new_delete
auto_inline
bool
cplusplus
cpp1x
cpp_extensions
debuginline
def_inherited
defer_codegen
defer_defarg_parsing
direct_destruction
direct_to_som
dont_inline
ecplusplus
exceptions
inline_bottom_up_once
inline_depth
inline_max_auto_size
inline_max_size
inline_max_total_size
internal
iso_templates
new_mangler
no_conststringconv
no_static_dtors
nosyminline
old_friend_lookup
old_pods
old_vtable
opt_classresults
parse_func_templ
parse_mfunc_templ
RTTI
suppress_init_code
template_depth
thread_safe_init
warn_hidevirtual
warn_no_explicit_virtual
warn_no_typename
warn_notinlined
warn_structclass
wchar_type