|  | llvm-bcanalyzer - LLVM bitcode analyzer | 
|  | ======================================= | 
|  |  | 
|  | SYNOPSIS | 
|  | -------- | 
|  |  | 
|  | :program:`llvm-bcanalyzer` [*options*] [*filename*] | 
|  |  | 
|  | DESCRIPTION | 
|  | ----------- | 
|  |  | 
|  | The :program:`llvm-bcanalyzer` command is a small utility for analyzing bitcode | 
|  | files.  The tool reads a bitcode file (such as generated with the | 
|  | :program:`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 *filename* is omitted or is ``-``, then :program:`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. | 
|  |  | 
|  | OPTIONS | 
|  | ------- | 
|  |  | 
|  | .. program:: llvm-bcanalyzer | 
|  |  | 
|  | .. option:: -nodetails | 
|  |  | 
|  | Causes :program:`llvm-bcanalyzer` to abbreviate its output by writing out only | 
|  | a module level summary.  The details for individual functions are not | 
|  | displayed. | 
|  |  | 
|  | .. option:: -dump | 
|  |  | 
|  | Causes :program:`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. | 
|  |  | 
|  | .. option:: -verify | 
|  |  | 
|  | Causes :program:`llvm-bcanalyzer` to verify the module produced by reading the | 
|  | bitcode.  This ensures that the statistics generated are based on a consistent | 
|  | module. | 
|  |  | 
|  | .. option:: -help | 
|  |  | 
|  | Print a summary of command line options. | 
|  |  | 
|  | EXIT STATUS | 
|  | ----------- | 
|  |  | 
|  | If :program:`llvm-bcanalyzer` succeeds, it will exit with 0.  Otherwise, if an | 
|  | error occurs, it will exit with a non-zero value, usually 1. | 
|  |  | 
|  | SUMMARY OUTPUT DEFINITIONS | 
|  | -------------------------- | 
|  |  | 
|  | The following items are always printed by llvm-bcanalyzer.  They comprize the | 
|  | summary output. | 
|  |  | 
|  | **Bitcode Analysis Of Module** | 
|  |  | 
|  | This just provides the name of the module for which bitcode analysis is being | 
|  | generated. | 
|  |  | 
|  | **Bitcode Version Number** | 
|  |  | 
|  | The bitcode version (not LLVM version) of the file read by the analyzer. | 
|  |  | 
|  | **File Size** | 
|  |  | 
|  | The size, in bytes, of the entire bitcode file. | 
|  |  | 
|  | **Module Bytes** | 
|  |  | 
|  | The size, in bytes, of the module block.  Percentage is relative to File Size. | 
|  |  | 
|  | **Function Bytes** | 
|  |  | 
|  | The size, in bytes, of all the function blocks.  Percentage is relative to File | 
|  | Size. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **Constant Pool Bytes** | 
|  |  | 
|  | The size, in bytes, of the Constant Pool Blocks Percentage is relative to File | 
|  | Size. | 
|  |  | 
|  | **Module Globals Bytes** | 
|  |  | 
|  | Ths size, in bytes, of the Global Variable Definitions and their initializers. | 
|  | Percentage is relative to File Size. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **Number Of Bitcode Blocks** | 
|  |  | 
|  | The total number of blocks of any kind in the bitcode file. | 
|  |  | 
|  | **Number Of Functions** | 
|  |  | 
|  | The total number of function definitions in the bitcode file. | 
|  |  | 
|  | **Number Of Types** | 
|  |  | 
|  | The total number of types defined in the Global Types Pool. | 
|  |  | 
|  | **Number Of Constants** | 
|  |  | 
|  | The total number of constants (of any type) defined in the Constant Pool. | 
|  |  | 
|  | **Number Of Basic Blocks** | 
|  |  | 
|  | The total number of basic blocks defined in all functions in the bitcode file. | 
|  |  | 
|  | **Number Of Instructions** | 
|  |  | 
|  | The total number of instructions defined in all functions in the bitcode file. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **Number Of Operands** | 
|  |  | 
|  | The total number of operands used in all instructions in the bitcode file. | 
|  |  | 
|  | **Number Of Compaction Tables** | 
|  |  | 
|  | The total number of compaction tables in all functions in the bitcode file. | 
|  |  | 
|  | **Number Of Symbol Tables** | 
|  |  | 
|  | The total number of symbol tables in all functions in the bitcode file. | 
|  |  | 
|  | **Number Of Dependent Libs** | 
|  |  | 
|  | The total number of dependent libraries found in the bitcode file. | 
|  |  | 
|  | **Total Instruction Size** | 
|  |  | 
|  | The total size of the instructions in all functions in the bitcode file. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **Maximum Type Slot Number** | 
|  |  | 
|  | The maximum value used for a type's slot number.  Larger slot number values take | 
|  | more bytes to encode. | 
|  |  | 
|  | **Maximum Value Slot Number** | 
|  |  | 
|  | The maximum value used for a value's slot number.  Larger slot number values take | 
|  | more bytes to encode. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **Bytes Per Global** | 
|  |  | 
|  | The average size of a global definition (constants and global variables). | 
|  |  | 
|  | **Bytes Per Function** | 
|  |  | 
|  | The average number of bytes per function definition.  This is computed by | 
|  | dividing Function Bytes by Number Of Functions. | 
|  |  | 
|  | **# of VBR 32-bit Integers** | 
|  |  | 
|  | The total number of 32-bit integers encoded using the Variable Bit Rate | 
|  | encoding scheme. | 
|  |  | 
|  | **# of VBR 64-bit Integers** | 
|  |  | 
|  | The total number of 64-bit integers encoded using the Variable Bit Rate encoding | 
|  | scheme. | 
|  |  | 
|  | **# 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. | 
|  |  | 
|  | **# 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. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | 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. | 
|  |  | 
|  | **Type** | 
|  |  | 
|  | The type signature of the function. | 
|  |  | 
|  | **Byte Size** | 
|  |  | 
|  | The total number of bytes in the function's block. | 
|  |  | 
|  | **Basic Blocks** | 
|  |  | 
|  | The number of basic blocks defined by the function. | 
|  |  | 
|  | **Instructions** | 
|  |  | 
|  | The number of instructions defined by the function. | 
|  |  | 
|  | **Long Instructions** | 
|  |  | 
|  | The number of instructions using the long instruction format in the function. | 
|  |  | 
|  | **Operands** | 
|  |  | 
|  | The number of operands used by all instructions in the function. | 
|  |  | 
|  | **Instruction Size** | 
|  |  | 
|  | The number of bytes consumed by instructions in the function. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **Number of VBR 32-bit Integers** | 
|  |  | 
|  | The total number of 32-bit integers found in this function (for any use). | 
|  |  | 
|  | **Number of VBR 64-bit Integers** | 
|  |  | 
|  | The total number of 64-bit integers found in this function (for any use). | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | **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. | 
|  |  | 
|  | SEE ALSO | 
|  | -------- | 
|  |  | 
|  | :doc:`/CommandGuide/llvm-dis`, :doc:`/BitCodeFormat` | 
|  |  |