LLVM IO错误 - 写入bc文件时出错

时间:2014-04-12 13:46:16

标签: c++ ios llvm

当我尝试删除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

1 个答案:

答案 0 :(得分:1)

raw_fd_ostream对象上发生了一些IO错误 - 可能是基础writev调用遇到了不可恢复的错误。 raw_fd_ostream在这种情况下的行为是打开一个表示发生错误的标志,如果该标志在销毁期间仍然打开,则会报告致命错误(=崩溃)。

如果您想避免此崩溃,可以在破坏之前调用对象上的clear_error();虽然它当然建议您先通过has_error()检查自己是否发生错误,然后尝试处理。