【问题标题】:Get textual representation of LLVM IR from module obejct从模块对象获取 LLVM IR 的文本表示
【发布时间】:2021-05-25 17:43:24
【问题描述】:

我目前正在为类似 C/C++ 的语言开发编译器。我已经到了代码生成的编译阶段。我正在使用 LLVM C++ api 从输入文件创建 LLVM IR。

据我了解,我的模块对象(我只使用一个模块)应该包含获取 LLVM IR 的文本表示为字符串所需的所有信息。

但我真的不知道该怎么做。

【问题讨论】:

    标签: c++ compiler-construction clang llvm-ir llvm-c++-api


    【解决方案1】:

    如果您希望获得 llvm::Module 的 LLVM IR,您可以使用 llvm::Module::print 函数。将此与 LLVM 标准流结合使用,如下所示:

    llvm::Module module = ...
    module.print(llvm::errs()); // for stderr, llvm::outs() for stdout
    

    【讨论】:

      【解决方案2】:

      另见dump()

      module.dump();  // print to stderr
      

      或使用raw_ostream

      llvm::outs() << module;
      // or
      llvm::errs() << module;
      // or
      llvm::dbgs() << module;
      

      【讨论】:

        猜你喜欢
        • 2017-10-15
        • 2022-07-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-14
        • 2022-06-30
        相关资源
        最近更新 更多