llvm-diff - LLVM 结构 ‘diff’¶
概要¶
llvm-diff [options] module 1 module 2 [global name …]
描述¶
llvm-diff 比较两个 LLVM 模块的结构,主要关注函数定义中的差异。不重要的差异,例如全局变量顺序的变化或局部变量名称的变化,将被忽略。
如果输入模块的名称以 '.ll' 结尾,则会被解释为汇编文件;否则,它将被读取为位代码文件。
如果给出了全局名称列表,则仅比较具有这些名称的值;否则,将比较所有全局值,并为仅在一个模块中出现的全局变量生成诊断信息。
llvm-diff 通过比较两个函数的基本块来比较它们,从入口块开始。如果终止符看起来匹配,则比较相应的后继块;否则它们将被忽略。此算法对控制流的变化非常敏感,这往往会阻止检测到任何下游变化。
llvm-diff 旨在作为 LLVM passes 和前端编写者的调试工具。它没有稳定的输出格式。
退出状态¶
如果 llvm-diff 在模块之间未找到差异,它将以 0 退出并且不产生任何输出。否则,它将以非零值退出。
缺陷¶
许多重要的差异,例如链接或函数属性的更改,未被诊断出来。
内存行为的变化(例如,合并加载)可能会导致块中检测到大量差异。