Previous: Severity Pragmas, Up: Pragmas [Contents][Index]
These pragmas enable a particular optimization for specific function definitions. The settings take effect at the end of a function definition, so the clean place to use these pragmas is between function definitions.
#pragma GCC optimize optimization_Pragma ("GCC optimize optimization")These pragmas enable the optimization optimization for the following functions. For example,
_Pragma ("GCC optimize -fforward-propagate")
says to apply the ‘forward-propagate’ optimization to all following function definitions. Specifying optimizations for individual functions, rather than for the entire program, is rare but can be useful for getting around a bug in the compiler.
If optimization does not correspond to a defined optimization option, the pragma is erroneous. To turn off an optimization, use the corresponding ‘-fno-’ option, such as ‘-fno-forward-propagate’.
#pragma GCC target optimizations_Pragma ("GCC target optimizations")The pragma ‘GCC target’ is similar to ‘GCC optimize’ but is used for platform-specific optimizations. Thus,
_Pragma ("GCC target popcnt")
activates the optimization ‘popcnt’ for all following function definitions. This optimization is supported on a few common targets but not on others.
#pragma GCC push_options_Pragma ("GCC push_options")The ‘push_options’ pragma saves on a stack the current settings specified with the ‘target’ and ‘optimize’ pragmas.
#pragma GCC pop_options_Pragma ("GCC pop_options")The ‘pop_options’ pragma pops saved settings from that stack.
Here’s an example of using this stack.
_Pragma ("GCC push_options")
_Pragma ("GCC optimize forward-propagate")
/* Functions to compile
with the forward-propagate optimization. */
_Pragma ("GCC pop_options")
/* Ends enablement of forward-propagate. */
#pragma GCC reset_options_Pragma ("GCC reset_options")Clears all pragma-defined ‘target’ and ‘optimize’ optimization settings.
Previous: Severity Pragmas, Up: Pragmas [Contents][Index]