微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从模块 obejct 获取 LLVM IR 的文本表示

如何解决从模块 obejct 获取 LLVM IR 的文本表示

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

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

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

解决方法

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

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

另见dump()

module.dump();  // print to stderr

或者使用raw_ostream

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。