=pod

=head1 NAME

llvm-bcanalyzer - LLVM bitcode analyzer

=head1 SYNOPSIS

B<llvm-bcanalyzer> [I<options>] [F<filename>]

=head1 DESCRIPTION

The B<llvm-bcanalyzer> command is a small utility for analyzing bitcode files.
The tool reads a bitcode file (such as generated with the B<llvm-as> tool) and
produces a statistical report on the contents of the bitcode file.  The tool
can also dump a low level but human readable version of the bitcode file. 
This tool is probably not of much interest or utility except for those working 
directly with the bitcode file format. Most LLVM users can just ignore
this tool.

If F<filename> is omitted or is C<->, then B<llvm-bcanalyzer> reads its input 
from standard input. This is useful for combining the tool into a pipeline.
Output is written to the standard output.

=head1 OPTIONS

=over

=item B<-nodetails>

Causes B<llvm-bcanalyzer> to abbreviate its output by writing out only a module 
level summary. The details for individual functions are not displayed.

=item B<-dump>

Causes B<llvm-bcanalyzer> to dump the bitcode in a human readable format. This 
format is significantly different from LLVM assembly and provides details about 
the encoding of the bitcode file.

=item B<-verify>

Causes B<llvm-bcanalyzer> to verify the module produced by reading the 
bitcode. This ensures that the statistics generated are based on a consistent
module.

=item B<-help>

Print a summary of command line options.

=back

=head1 EXIT STATUS

If B<llvm-bcanalyzer> succeeds, it will exit with 0.  Otherwise, if an error
occurs, it will exit with a non-zero value, usually 1.

=head1 SUMMARY OUTPUT DEFINITIONS

The following items are always printed by llvm-bcanalyzer. They comprize the
summary output.

=over

=item B<Bitcode Analysis Of Module>

This just provides the name of the module for which bitcode analysis is being
generated.

=item B<Bitcode Version Number>

The bitcode version (not LLVM version) of the file read by the analyzer.

=item B<File Size>

The size, in bytes, of the entire bitcode file.

=item B<Module Bytes>

The size, in bytes, of the module block. Percentage is relative to File Size.

=item B<Function Bytes>

The size, in bytes, of all the function blocks. Percentage is relative to File
Size.

=item B<Global Types Bytes>

The size, in bytes, of the Global Types Pool. Percentage is relative to File
Size. This is the size of the definitions of all types in the bitcode file.

=item B<Constant Pool Bytes>

The size, in bytes, of the Constant Pool Blocks Percentage is relative to File
Size.

=item B<Module Globals Bytes>

Ths size, in bytes, of the Global Variable Definitions and their initializers.
Percentage is relative to File Size.

=item B<Instruction List Bytes>

The size, in bytes, of all the instruction lists in all the functions.
Percentage is relative to File Size. Note that this value is also included in
the Function Bytes.

=item B<Compaction Table Bytes>

The size, in bytes, of all the compaction tables in all the functions.
Percentage is relative to File Size. Note that this value is also included in
the Function Bytes.

=item B<Symbol Table Bytes>

The size, in bytes, of all the symbol tables in all the functions. Percentage is
relative to File Size. Note that this value is also included in the Function
Bytes.

=item B<Dependent Libraries Bytes>

The size, in bytes, of the list of dependent libraries in the module. Percentage
is relative to File Size. Note that this value is also included in the Module
Global Bytes.

=item B<Number Of Bitcode Blocks>

The total number of blocks of any kind in the bitcode file.

=item B<Number Of Functions>

The total number of function definitions in the bitcode file.

=item B<Number Of Types>

The total number of types defined in the Global Types Pool.

=item B<Number Of Constants>

The total number of constants (of any type) defined in the Constant Pool.

=item B<Number Of Basic Blocks>

The total number of basic blocks defined in all functions in the bitcode file.

=item B<Number Of Instructions>

The total number of instructions defined in all functions in the bitcode file.

=item B<Number Of Long Instructions>

The total number of long instructions defined in all functions in the bitcode
file. Long instructions are those taking greater than 4 bytes. Typically long
instructions are GetElementPtr with several indices, PHI nodes, and calls to
functions with large numbers of arguments.

=item B<Number Of Operands>

The total number of operands used in all instructions in the bitcode file.

=item B<Number Of Compaction Tables>

The total number of compaction tables in all functions in the bitcode file.

=item B<Number Of Symbol Tables>

The total number of symbol tables in all functions in the bitcode file.

=item B<Number Of Dependent Libs>

The total number of dependent libraries found in the bitcode file.

=item B<Total Instruction Size>

The total size of the instructions in all functions in the bitcode file.

=item B<Average Instruction Size>

The average number of bytes per instruction across all functions in the bitcode
file. This value is computed by dividing Total Instruction Size by Number Of
Instructions.

=item B<Maximum Type Slot Number>

The maximum value used for a type's slot number. Larger slot number values take 
more bytes to encode.

=item B<Maximum Value Slot Number>

The maximum value used for a value's slot number. Larger slot number values take 
more bytes to encode.

=item B<Bytes Per Value>

The average size of a Value definition (of any type). This is computed by
dividing File Size by the total number of values of any type.

=item B<Bytes Per Global>

The average size of a global definition (constants and global variables).

=item B<Bytes Per Function>

The average number of bytes per function definition. This is computed by
dividing Function Bytes by Number Of Functions.

=item B<# of VBR 32-bit Integers>

The total number of 32-bit integers encoded using the Variable Bit Rate
encoding scheme.

=item B<# of VBR 64-bit Integers>

The total number of 64-bit integers encoded using the Variable Bit Rate encoding
scheme.

=item B<# of VBR Compressed Bytes>

The total number of bytes consumed by the 32-bit and 64-bit integers that use
the Variable Bit Rate encoding scheme.

=item B<# of VBR Expanded Bytes>

The total number of bytes that would have been consumed by the 32-bit and 64-bit
integers had they not been compressed with the Variable Bit Rage encoding
scheme.

=item B<Bytes Saved With VBR>

The total number of bytes saved by using the Variable Bit Rate encoding scheme.
The percentage is relative to # of VBR Expanded Bytes.

=back

=head1 DETAILED OUTPUT DEFINITIONS

The following definitions occur only if the -nodetails option was not given.
The detailed output provides additional information on a per-function basis.

=over

=item B<Type>

The type signature of the function.

=item B<Byte Size>

The total number of bytes in the function's block.

=item B<Basic Blocks>

The number of basic blocks defined by the function.

=item B<Instructions>

The number of instructions defined by the function.

=item B<Long Instructions>

The number of instructions using the long instruction format in the function.

=item B<Operands>

The number of operands used by all instructions in the function.

=item B<Instruction Size>

The number of bytes consumed by instructions in the function.

=item B<Average Instruction Size>

The average number of bytes consumed by the instructions in the function. This
value is computed by dividing Instruction Size by Instructions.

=item B<Bytes Per Instruction>

The average number of bytes used by the function per instruction. This value is
computed by dividing Byte Size by Instructions. Note that this is not the same
as Average Instruction Size. It computes a number relative to the total function
size not just the size of the instruction list.

=item B<Number of VBR 32-bit Integers>

The total number of 32-bit integers found in this function (for any use).

=item B<Number of VBR 64-bit Integers>

The total number of 64-bit integers found in this function (for any use).

=item B<Number of VBR Compressed Bytes>

The total number of bytes in this function consumed by the 32-bit and 64-bit 
integers that use the Variable Bit Rate encoding scheme.

=item B<Number of VBR Expanded Bytes>

The total number of bytes in this function that would have been consumed by 
the 32-bit and 64-bit integers had they not been compressed with the Variable 
Bit Rate encoding scheme.

=item B<Bytes Saved With VBR>

The total number of bytes saved in this function by using the Variable Bit 
Rate encoding scheme. The percentage is relative to # of VBR Expanded Bytes.

=back

=head1 SEE ALSO

L<llvm-dis|llvm-dis>, L<http://llvm.org/docs/BitCodeFormat.html>

=head1 AUTHORS

Maintained by the LLVM Team (L<http://llvm.org/>).

=cut
