llvm / llvm / f6e5376a873d7c3b296e3b49e1b7606523b11d6f / . / docs / CommandGuide / llvm-bcanalyzer.rst

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