=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
