reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
  134
  135
  136
  137
  138
  139
  140
  141
  142
  143
  144
  145
  146
  147
  148
  149
  150
  151
  152
  153
  154
  155
  156
  157
  158
  159
  160
  161
  162
  163
  164
  165
  166
  167
  168
  169
  170
  171
  172
  173
  174
  175
  176
  177
  178
  179
  180
  181
  182
  183
  184
  185
  186
  187
  188
  189
  190
  191
  192
  193
  194
  195
  196
  197
  198
  199
  200
  201
  202
  203
  204
  205
  206
  207
  208
  209
  210
  211
  212
  213
  214
  215
  216
  217
  218
  219
  220
  221
  222
  223
  224
  225
  226
  227
  228
  229
  230
  231
  232
  233
  234
  235
  236
  237
  238
  239
  240
  241
  242
  243
  244
  245
  246
  247
  248
  249
  250
  251
  252
  253
  254
  255
  256
  257
  258
  259
  260
  261
  262
  263
  264
  265
  266
  267
  268
  269
  270
  271
  272
  273
  274
  275
  276
  277
  278
  279
  280
  281
  282
  283
  284
  285
  286
  287
  288
  289
  290
  291
  292
  293
  294
  295
  296
  297
  298
  299
  300
  301
  302
  303
  304
  305
  306
llvm-bcanalyzer - LLVM bitcode analyzer
=======================================

.. program:: llvm-bcanalyzer

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

:manpage:`llvm-dis(1)`, :doc:`/BitCodeFormat`