NAME
binopt - SPARC Binary Optimizer
SYNOPSIS
binopt [-binstrument[=on|off]] [-bdata=datafile]
[-o filename] [-V] [-flags] [-Q[y|n]]
[-xinline=[[,v...]]] binfile
binopt [-buse[=on|off]] [-blevel=0|1|2]
[-bdata=datafile] [-bfinal[=on|off]] [-o filename]
[-V] [-flags] [-Q[y|n]]
[-xinline=[[,v...]]] binfile
DESCRIPTION
The binopt command is used to optimize SPARC binaries (exe-
cutables or shared objects). It can optimize binaries
irrespective of the source language used. It can also optim-
ize mixed source language binaries. To be able to effec-
tively optimize binaries, it must be prepared with optimiza-
tions (-O or -xO) and the -xbinopt=prepare compiler option
(see cc(1), CC(1), f95(1) for option details).
The Binary Optimizer may also be used to instrument a binary
for profile collection. The instrumented binary must then be
run with an input data training set representing a typical
user's data. This training run will create a binary file
with profile data. This file must then be fed back to the
Binary Optimizer to create a profile optimized binary.
The binopt command performs several levels of optimizations.
At higher levels of optimization, more optimizations are
performed, leading to a potentially more optimal binary. A
possible side-effect is increased build time.
By default, if no output file name is specified, the input
file is overwritten with the optimized binary. Unless the
-bfinal option is given, binaries created by the binopt com-
mand may be optimized by a future invocation of the Binary
Optimizer.
OPTIONS
-binstrument[=on|off]
Instrument the binary for profile collection. All
optimizations are automatically turned off. The -bdata
option may be used to modify the default file used to
store the profile data. This cannot be used with the
-buse flag.
-buse[=on|off]
Perform profile guided optimizations using profile
data. Again, the -bdata flag may be used to modify the
default file location. This cannot be used with the
-binstrument flag.
-blevel=0|1|2
Perform different levels of optimizations.
At level 0, no optimizations are performed.
At level 1, do code reordering optimizations (this is
the default behavior).
At level 2, data-flow information is constructed and
more aggressive optimizations like inlining and address
related optimizations are performed.
-bdata=datafile
Specifies the file where the profile data will be
stored. This option is used only with -binstrument or
-buse and is ignored otherwise. If this option is not
used, the default file name is binfile.instrdata.
-bfinal[=on|off]
Finalize the output binary so that no future binary
optimizations may be performed. This option is useful
in the final build step after which no further
transformations are planned. For example, this may be
used with the -buse option when generating the final
optimal binary. The default is -bfinal=off.
-o filename
Names the output file filename, instead of overwriting
the input binfile file by default.
-V Print the version number of the tool on the standard
error output.
-flags
Prints a one-line summary of available options.
-Q[y|n]
Emits or does not emit the Binary Optimizer version
identification information the output file. If -Qy is
used, identification information will be added to the
output files (the default behavior). -Qn suppresses
this information.
-xinline=[[,v...]]
v can be %auto func_name no%func_name
-xinline tries to inline only those functions specified
in the list. The list is comprised of either a comma-
separated list of function names, or a comma-separated
list of no%func_name values, or the value %auto. If you
specify %nofunc_name, the compiler is not to inline the
named function. If you specify %auto, binopt will
attempt to automatically inline functions.
By default automatic inlining is enabled at
optimization level 2.
OPERAND
binfile
Binary file to be optimized.
EXAMPLES
Example 1: Prepare and optimize a binary
The following entry prepares the created binary for optimi-
zations and then optimizes it with the binopt command,
overwriting the binary file in place.
% cc -O -xbinopt=prepare *.c -o a.out
% binopt a.out
Example 2: Instrument, run, and perform profile guided
optimizations.
The following example instruments a binary, performs a
training run and then uses the profile data to perform pro-
file guided optimizations.
% binopt -binstrument -bdata=a.out.data -o a.out.instr a.out
% ./a.out.instr
% binopt -buse -bdata=a.out.data -o a.out.opt a.out
Example 3: Perform level 2 optimizations and finalize.
The following example performs binary optimizations at level
2 and then finalizes the binary so that the binary may not
be optimized in the future.
% binopt -blevel=2 -bfinal a.out
SEE ALSO
cc(1), CC(1), f95(1).