477 lines
12 KiB
Groff
477 lines
12 KiB
Groff
.\" $FreeBSD$
|
|
.\" Man page generated from reStructuredText.
|
|
.
|
|
.TH "LLVM-BCANALYZER" "1" "2016-03-03" "3.8" "LLVM"
|
|
.SH NAME
|
|
llvm-bcanalyzer \- LLVM bitcode analyzer
|
|
.
|
|
.nr rst2man-indent-level 0
|
|
.
|
|
.de1 rstReportMargin
|
|
\\$1 \\n[an-margin]
|
|
level \\n[rst2man-indent-level]
|
|
level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
-
|
|
\\n[rst2man-indent0]
|
|
\\n[rst2man-indent1]
|
|
\\n[rst2man-indent2]
|
|
..
|
|
.de1 INDENT
|
|
.\" .rstReportMargin pre:
|
|
. RS \\$1
|
|
. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
|
|
. nr rst2man-indent-level +1
|
|
.\" .rstReportMargin post:
|
|
..
|
|
.de UNINDENT
|
|
. RE
|
|
.\" indent \\n[an-margin]
|
|
.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
.nr rst2man-indent-level -1
|
|
.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
|
|
.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
|
|
..
|
|
.SH SYNOPSIS
|
|
.sp
|
|
\fBllvm\-bcanalyzer\fP [\fIoptions\fP] [\fIfilename\fP]
|
|
.SH DESCRIPTION
|
|
.sp
|
|
The \fBllvm\-bcanalyzer\fP command is a small utility for analyzing bitcode
|
|
files. The tool reads a bitcode file (such as generated with the
|
|
\fBllvm\-as\fP 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.
|
|
.sp
|
|
If \fIfilename\fP is omitted or is \fB\-\fP, then \fBllvm\-bcanalyzer\fP reads its
|
|
input from standard input. This is useful for combining the tool into a
|
|
pipeline. Output is written to the standard output.
|
|
.SH OPTIONS
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-nodetails
|
|
Causes \fBllvm\-bcanalyzer\fP to abbreviate its output by writing out only
|
|
a module level summary. The details for individual functions are not
|
|
displayed.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-dump
|
|
Causes \fBllvm\-bcanalyzer\fP 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.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-verify
|
|
Causes \fBllvm\-bcanalyzer\fP to verify the module produced by reading the
|
|
bitcode. This ensures that the statistics generated are based on a consistent
|
|
module.
|
|
.UNINDENT
|
|
.INDENT 0.0
|
|
.TP
|
|
.B \-help
|
|
Print a summary of command line options.
|
|
.UNINDENT
|
|
.SH EXIT STATUS
|
|
.sp
|
|
If \fBllvm\-bcanalyzer\fP succeeds, it will exit with 0. Otherwise, if an
|
|
error occurs, it will exit with a non\-zero value, usually 1.
|
|
.SH SUMMARY OUTPUT DEFINITIONS
|
|
.sp
|
|
The following items are always printed by llvm\-bcanalyzer. They comprize the
|
|
summary output.
|
|
.sp
|
|
\fBBitcode Analysis Of Module\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
This just provides the name of the module for which bitcode analysis is being
|
|
generated.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBBitcode Version Number\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The bitcode version (not LLVM version) of the file read by the analyzer.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBFile Size\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The size, in bytes, of the entire bitcode file.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBModule Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The size, in bytes, of the module block. Percentage is relative to File Size.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBFunction Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The size, in bytes, of all the function blocks. Percentage is relative to File
|
|
Size.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBGlobal Types Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBConstant Pool Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The size, in bytes, of the Constant Pool Blocks Percentage is relative to File
|
|
Size.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBModule Globals Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
Ths size, in bytes, of the Global Variable Definitions and their initializers.
|
|
Percentage is relative to File Size.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBInstruction List Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBCompaction Table Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBSymbol Table Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBDependent Libraries Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber Of Bitcode Blocks\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of blocks of any kind in the bitcode file.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber Of Functions\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of function definitions in the bitcode file.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber Of Types\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of types defined in the Global Types Pool.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber Of Constants\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of constants (of any type) defined in the Constant Pool.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber Of Basic Blocks\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of basic blocks defined in all functions in the bitcode file.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber Of Instructions\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of instructions defined in all functions in the bitcode file.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber Of Long Instructions\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber Of Operands\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of operands used in all instructions in the bitcode file.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber Of Compaction Tables\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of compaction tables in all functions in the bitcode file.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber Of Symbol Tables\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of symbol tables in all functions in the bitcode file.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber Of Dependent Libs\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of dependent libraries found in the bitcode file.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBTotal Instruction Size\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total size of the instructions in all functions in the bitcode file.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBAverage Instruction Size\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBMaximum Type Slot Number\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The maximum value used for a type\(aqs slot number. Larger slot number values take
|
|
more bytes to encode.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBMaximum Value Slot Number\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The maximum value used for a value\(aqs slot number. Larger slot number values take
|
|
more bytes to encode.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBBytes Per Value\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBBytes Per Global\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The average size of a global definition (constants and global variables).
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBBytes Per Function\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The average number of bytes per function definition. This is computed by
|
|
dividing Function Bytes by Number Of Functions.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fB# of VBR 32\-bit Integers\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of 32\-bit integers encoded using the Variable Bit Rate
|
|
encoding scheme.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fB# of VBR 64\-bit Integers\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of 64\-bit integers encoded using the Variable Bit Rate encoding
|
|
scheme.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fB# of VBR Compressed Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of bytes consumed by the 32\-bit and 64\-bit integers that use
|
|
the Variable Bit Rate encoding scheme.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fB# of VBR Expanded Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBBytes Saved With VBR\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of bytes saved by using the Variable Bit Rate encoding scheme.
|
|
The percentage is relative to # of VBR Expanded Bytes.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.SH DETAILED OUTPUT DEFINITIONS
|
|
.sp
|
|
The following definitions occur only if the \-nodetails option was not given.
|
|
The detailed output provides additional information on a per\-function basis.
|
|
.sp
|
|
\fBType\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The type signature of the function.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBByte Size\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of bytes in the function\(aqs block.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBBasic Blocks\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The number of basic blocks defined by the function.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBInstructions\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The number of instructions defined by the function.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBLong Instructions\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The number of instructions using the long instruction format in the function.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBOperands\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The number of operands used by all instructions in the function.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBInstruction Size\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The number of bytes consumed by instructions in the function.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBAverage Instruction Size\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The average number of bytes consumed by the instructions in the function.
|
|
This value is computed by dividing Instruction Size by Instructions.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBBytes Per Instruction\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber of VBR 32\-bit Integers\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of 32\-bit integers found in this function (for any use).
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber of VBR 64\-bit Integers\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
The total number of 64\-bit integers found in this function (for any use).
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber of VBR Compressed Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBNumber of VBR Expanded Bytes\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.sp
|
|
\fBBytes Saved With VBR\fP
|
|
.INDENT 0.0
|
|
.INDENT 3.5
|
|
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.
|
|
.UNINDENT
|
|
.UNINDENT
|
|
.SH SEE ALSO
|
|
.sp
|
|
\fB/CommandGuide/llvm\-dis\fP, \fB/BitCodeFormat\fP
|
|
.SH AUTHOR
|
|
Maintained by The LLVM Team (http://llvm.org/).
|
|
.SH COPYRIGHT
|
|
2003-2016, LLVM Project
|
|
.\" Generated by docutils manpage writer.
|
|
.
|