llvm-bcanalyzer - LLVM bitcode 分析器

概要

llvm-bcanalyzer [选项] [文件名]

描述

llvm-bcanalyzer 命令是一个用于分析 bitcode 文件的小工具。该工具读取一个 bitcode 文件(例如使用 llvm-as 工具生成的文件),并生成关于 bitcode 文件内容的统计报告。该工具还可以转储 bitcode 文件的低级但人类可读的版本。除了直接使用 bitcode 文件格式的人员外,此工具可能没有太大的意义或实用价值。大多数 LLVM 用户可以忽略此工具。

如果省略 filename 或为 -,则 llvm-bcanalyzer 从标准输入读取其输入。这对于将该工具组合到管道中很有用。输出写入标准输出。

选项

--dump

使 llvm-bcanalyzer 以人类可读的格式转储 bitcode。此格式与 LLVM 汇编显着不同,并提供有关 bitcode 文件编码的详细信息。

--help

打印命令行选项的摘要。

退出状态

如果 llvm-bcanalyzer 成功,它将以 0 退出。否则,如果发生错误,它将以非零值退出,通常为 1。

摘要输出定义

llvm-bcanalyzer 始终打印以下项目。它们构成摘要输出。

模块的 Bitcode 分析

这仅提供正在为其生成 bitcode 分析的模块的名称。

Bitcode 版本号

分析器读取的文件的 bitcode 版本(不是 LLVM 版本)。

文件大小

整个 bitcode 文件的大小,以字节为单位。

模块字节数

模块块的大小,以字节为单位。百分比相对于文件大小。

函数字节数

所有函数块的大小,以字节为单位。百分比相对于文件大小。

全局类型字节数

全局类型池的大小,以字节为单位。百分比相对于文件大小。这是 bitcode 文件中所有类型定义的大小。

常量池字节数

常量池块的大小,以字节为单位。百分比相对于文件大小。

模块全局变量字节数

全局变量定义及其初始化器的大小,以字节为单位。百分比相对于文件大小。

指令列表字节数

所有函数中所有指令列表的大小,以字节为单位。百分比相对于文件大小。请注意,此值也包含在函数字节数中。

压缩表字节数

所有函数中所有压缩表的大小,以字节为单位。百分比相对于文件大小。请注意,此值也包含在函数字节数中。

符号表字节数

所有函数中所有符号表的大小,以字节为单位。百分比相对于文件大小。请注意,此值也包含在函数字节数中。

依赖库字节数

模块中依赖库列表的大小,以字节为单位。百分比相对于文件大小。请注意,此值也包含在模块全局变量字节数中。

Bitcode 块数量

bitcode 文件中任何类型的块的总数。

函数数量

bitcode 文件中函数定义的总数。

类型数量

全局类型池中定义的类型的总数。

常量数量

常量池中定义的常量(任何类型)的总数。

基本块数量

bitcode 文件中所有函数中定义的基本块的总数。

指令数量

bitcode 文件中所有函数中定义的指令的总数。

长指令数量

bitcode 文件中所有函数中定义的长指令的总数。长指令是指占用超过 4 个字节的指令。通常,长指令是具有多个索引的 GetElementPtr、PHI 节点以及对具有大量参数的函数的调用。

操作数数量

bitcode 文件中所有指令中使用的操作数的总数。

压缩表数量

bitcode 文件中所有函数中的压缩表的总数。

符号表数量

bitcode 文件中所有函数中的符号表的总数。

依赖库数量

在 bitcode 文件中找到的依赖库的总数。

总指令大小

bitcode 文件中所有函数中的指令的总大小。

平均指令大小

bitcode 文件中所有函数中每条指令的平均字节数。此值通过将总指令大小除以指令数量来计算。

最大类型槽号

类型槽号使用的最大值。较大的槽号值需要更多字节来编码。

最大值槽号

值槽号使用的最大值。较大的槽号值需要更多字节来编码。

每个值的字节数

值定义(任何类型)的平均大小。这通过将文件大小除以任何类型的值的总数来计算。

每个全局变量的字节数

全局变量定义(常量和全局变量)的平均大小。

每个函数的字节数

每个函数定义的平均字节数。这通过将函数字节数除以函数数量来计算。

VBR 32 位整数的数量

使用可变比特率编码方案编码的 32 位整数的总数。

VBR 64 位整数的数量

使用可变比特率编码方案编码的 64 位整数的总数。

VBR 压缩字节数

使用可变比特率编码方案的 32 位和 64 位整数消耗的字节总数。

VBR 扩展字节数

如果 32 位和 64 位整数未使用可变比特率编码方案进行压缩,则它们将消耗的字节总数。

使用 VBR 节省的字节数

通过使用可变比特率编码方案节省的字节总数。百分比相对于 VBR 扩展字节数。

详细输出定义

仅当未给出 -nodetails 选项时,才会出现以下定义。详细输出提供关于每个函数的附加信息。

类型

函数的类型签名。

字节大小

函数块中的字节总数。

基本块

函数定义的基本块的数量。

指令

函数定义的指令的数量。

长指令

函数中使用长指令格式的指令数量。

操作数

函数中所有指令使用的操作数的数量。

指令大小

函数中指令消耗的字节数。

平均指令大小

函数中指令消耗的平均字节数。此值通过将指令大小除以指令数量来计算。

每个指令的字节数

函数中每条指令使用的平均字节数。此值通过将字节大小除以指令数量来计算。请注意,这与平均指令大小不同。它计算相对于总函数大小而不是仅指令列表大小的数字。

VBR 32 位整数的数量

在此函数中找到的 32 位整数的总数(用于任何用途)。

VBR 64 位整数的数量

在此函数中找到的 64 位整数的总数(用于任何用途)。

VBR 压缩字节数

此函数中,使用可变比特率编码方案的 32 位和 64 位整数消耗的字节总数。

VBR 扩展字节数

如果此函数中的 32 位和 64 位整数未使用可变比特率编码方案进行压缩,则它们将消耗的字节总数。

使用 VBR 节省的字节数

在此函数中,通过使用可变比特率编码方案节省的字节总数。百分比相对于 VBR 扩展字节数。

另请参阅

llvm-dis(1), LLVM Bitcode 文件格式