forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			306 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
			
		
		
	
	
			306 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
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`
 | 
						|
 |