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