关于llvm过程的定义

关于llvm过程的定义,llvm,Llvm,我不太理解llvm中pass的定义。这是否意味着我只能使用opt命令来运行程序 我的情况就像我想在基本块的CFG中找到循环,我想使用LLVMAPI而不是自己编写代码。我发现了一个名为Loopinfo的文件,其中包括pass.h和从Functionpass继承的类passinfo。这是否意味着我只能使用opt命令来调用,而不是编写一个普通的项目,该项目使用类的一些函数来构建和执行?我希望我能清楚地澄清我的问题。最简单的方法是添加通过opt命令执行的pass。但是,您应该能够创建专用的可执行文件,该

我不太理解llvm中pass的定义。这是否意味着我只能使用opt命令来运行程序


我的情况就像我想在基本块的CFG中找到循环,我想使用LLVMAPI而不是自己编写代码。我发现了一个名为Loopinfo的文件,其中包括pass.h和从Functionpass继承的类passinfo。这是否意味着我只能使用opt命令来调用,而不是编写一个普通的项目,该项目使用类的一些函数来构建和执行?我希望我能清楚地澄清我的问题。

最简单的方法是添加通过
opt
命令执行的pass。但是,您应该能够创建专用的可执行文件,该文件读取LLVM位代码,执行传递并将位代码写回

有关示例,请参见此处:

opt
命令的来源也可能有用:


您可以分析和操作LLVM IR,而不需要了解任何有关过程的信息。只要使用LLVMAPI,您就可以了

那么通行证是怎么回事?如果你以以下的方式写你的分析或转换,你仍然可以将它作为任何规则C++类使用,但是你可以得到一些优点:

  • 您可以使用
    opt
    工具运行通行证。它将为您处理所有其他事项(例如加载IR),它使您在通过之前或之后运行其他过程(包括有用的验证过程)变得非常容易,使启用/禁用调试模式变得非常容易,等等

  • 您可以使用a轻松地将您的过程与其他过程结合起来,这非常方便(例如,将为您处理过程依赖关系)

  • 因此,一般来说,以通行证的形式写东西是推荐的,但不是必需的



    1如果您定义了其他通行证的要求,那么如果您没有使用
    opt
    或通行证管理器,您必须自己运行这些要求