【发布时间】:2021-05-25 17:43:24
【问题描述】:
我目前正在为类似 C/C++ 的语言开发编译器。我已经到了代码生成的编译阶段。我正在使用 LLVM C++ api 从输入文件创建 LLVM IR。
据我了解,我的模块对象(我只使用一个模块)应该包含获取 LLVM IR 的文本表示为字符串所需的所有信息。
但我真的不知道该怎么做。
【问题讨论】:
标签: c++ compiler-construction clang llvm-ir llvm-c++-api
我目前正在为类似 C/C++ 的语言开发编译器。我已经到了代码生成的编译阶段。我正在使用 LLVM C++ api 从输入文件创建 LLVM IR。
据我了解,我的模块对象(我只使用一个模块)应该包含获取 LLVM IR 的文本表示为字符串所需的所有信息。
但我真的不知道该怎么做。
【问题讨论】:
标签: c++ compiler-construction clang llvm-ir llvm-c++-api
如果您希望获得 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;
【讨论】: