当我尝试删除raw_ostream
时发生错误void LLVMGenerator::SaveModule(string path) {
std::string ErrInfo = "";
llvm::raw_ostream *out =
new llvm::raw_fd_ostream(path.c_str(), ErrInfo, llvm::sys::fs::F_None);
llvm::WriteBitcodeToFile(_mod, *out);
out->flush();
delete out; // LLVM ERROR: IO failure on output stream.
return;
}
请给我一些提示 - 如何解决这个小问题? OS Ubuntu 13.10 x64,LLVM 3.4
答案 0 :(得分:1)
raw_fd_ostream
对象上发生了一些IO错误 - 可能是基础writev
调用遇到了不可恢复的错误。 raw_fd_ostream
在这种情况下的行为是打开一个表示发生错误的标志,如果该标志在销毁期间仍然打开,则会报告致命错误(=崩溃)。
如果您想避免此崩溃,可以在破坏之前调用对象上的clear_error()
;虽然它当然建议您先通过has_error()
检查自己是否发生错误,然后尝试处理。