15.2.28 Optimize Function Attribute
The
optimize(optimization) attribute allows a
function to be built with optimizations that differ from what has been specified
on the command line and which will be applied to the rest of the program. The
optimization argument can either be
a number or a string. String arguments represent the command-line option used to
control an optimization, for example, to enable peephole optimizations
(-fpeephole), use optimize("peephole").
The -f option prefix does not need to be specified with the
argument. If you want to specify more than one optimization, separate the
arguments with commas but with no space characters. Arguments that begin with
O are assumed to be an optimization level option, for
example optimize("O1,unroll-loops") turns on level 1
optimizations and the unroll-loops optimizations (controlled by the
-funroll-loops command-line option). A numerical argument
is also assumed to be an optimization level, for example
optimize(3) turns on level 3 optimizations and is
equivalent to the full usage of the attribute in the following example.
int __attribute__((optimize("O3"))) pandora (void) {
if (maya > axton)
return 1;
return 0;
}This feature can be used, for instance, to have frequently executed
functions compiled with more aggressive optimization options that produce faster
and larger code, while other functions can be called with less aggressive options.
Typically, however, it is not used for production builds.