什么是 LLVM 中的转换?它与 LLVM 中的传递有什么关系?

What is transformations in LLVM? How is is it related to passes in LLVM?

我刚开始学习 llvm,对转换和遍历有点困惑。

LLVM pass 是由您或 LLVM 后端生成的 LLVM IR 通过的东西。从上述IR的结构来看,我们可以做两件事。

  • 分析中我们从IR提供了一些关于程序的静态分析信息。 The clang static analyzer 是此类工具的一个示例。

  • 转型: 另一种选择是我们在通过它时更改 IR。我们进行转型。通常,我们这样做是为了使生成的可执行文件更好。我们优化了代码。最后一部分就是所谓的转换,或 Transform Passes 引用 LLVM 文档。简单地说,转换是由某些转换通道执行的操作,这与在执行通道时将 IR 更改为其他形式有关。

可以在此处找到更多相关信息 LLVM passes