LLVM的opt优化器的"--debug-pass"选项的用处

LLVM的opt优化器的"–debug-pass"选项的用处

opt是LLVM的优化器和分析器,它接受LLVM IR或者LLVM字节码作为优化的输入文件。

我们可以直接为opt指定pass在输入的代码上处理运行,pass可以是预定义的也可以是自定义的,预定义的pass可以查看http://llvm.org/docs/Passes.html 。

如果需要查看opt处理中代码过程中使用了哪些优化pass,可以结合opt使用--debug-pass=Structure选项。下面是一个小例子:

// file: /tmp/1.c
int foo(int aa, int bb, int cc) {
  int sum = aa + bb;
  return sum / cc;
}

int main(){
    foo(1,2,3);
    return 0;
}

执行命令:

clang -S -emit-llvm /tmp/1.c -o /tmp/1.ll
opt --debug-pass=Structure /tmp/1.ll

输出结果:

Pass Arguments:  -targetlibinfo -tti -verify
Target Library Information
Target Transform Information
  ModulePass Manager
    FunctionPass Manager
      Module Verifier

Pass Arguments显示了给opt工具传递了哪些参数。接下来的显示了有哪些pass被运行了。

ModulePass Manager 其后的pass都将在每个模块级运行

FunctionPass Manager其后的pass都将在每个函数级运行,上面结果中Module Verifier将在每个函数运行。

猜你喜欢

转载自blog.csdn.net/weixin_46222091/article/details/105443966