|  | =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 |