LLVM-更改默认输出流

时间:2013-08-11 21:33:38

标签: llvm

我想知道如何更改默认输出流以转储特定模块的生成IR。 module->dump()使用控制台打印输出。我在问这里之前做了一些搜索,但据我所知,我们应该使用raw_ostream类,我甚至无法获得新的实例。所以请告诉我如何才能正确获取llvm::raw_ostream的实例,以便我可以使用它llvm::WriteBitcodeToFile或任何其他转储LLVM IR的函数(我宁愿转储IR,但dumpint bc还可以也)。非常感谢!

1 个答案:

答案 0 :(得分:1)

如果使用print类的Module方法,则可以指定所选的输出流。

可以按如下方式获得输出流:

std::string errorMessage = ""; 
raw_fd_ostream example_ostream("example_filename", errorMessage, raw_fd_ostream::F_Append);
if(!errorMessage.empty())
  errs() << "Error opening " << example_filename << "\n";

example_ostream是您需要传递给print方法的句柄。请注意,此文件以追加模式打开,您可能希望根据需要进行更改。