llvm-diff命令详解

概要

llvm-diff [options*] *module 1 module 2 [global name …]

描述

llvm-diff比较两个LLVM模块的结构,主要关注函数定义的差异。忽略不显着的差异,例如全局变量或本地值名称的变化。

如果输入模块的名称以’.ll’结尾,则它将被解释为汇编文件; 否则它将作为bitcode文件读入。

如果给出了全局名称列表,则只比较具有这些名称的值; 否则,将比较所有全局值,并为仅出现在一个模块或另一个模块中的全局变量生成诊断。

llvm-diff通过比较它们的基本块来比较两个函数,从入口块开始。如果终结符似乎匹配,则比较相应的后继者; 否则他们会被忽略。该算法对控制流的变化非常敏感,这倾向于阻止检测到任何下游变化。

llvm-diff旨在作为LLVM传递和前端编写器的调试工具。它没有稳定的输出格式。

退出

如果llvm-diff发现模块之间没有差异,它将以0退出并且不产生输出。否则它将以非零值退出。

BUGS

许多重要的差异,如连锁或功能属性的变化,都没有被诊断出来。

内存行为的变化(例如,合并负载)可能导致块中检测到大量差异。