当我尝试删除 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;
}
操作系统 Ubuntu 13.10 x64,LLVM 3.4
最佳答案
raw_fd_ostream
对象上发生了一些 IO 错误 - 可能底层 writev
调用遇到了不可恢复的错误。 raw_fd_ostream
在这种情况下的行为是打开一个标志,指示发生错误,如果该标志在销毁期间仍然打开,它会报告 fatal error (=崩溃)。
如果你想避免这种崩溃,你可以在销毁对象之前调用clear_error()
;尽管我们当然建议您首先通过 has_error()
检查自己是否发生了错误,然后尝试处理它。
关于c++ - LLVM IO 错误 - 写入 bc 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23031197/