问题描述
我目前正在为类似 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;