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

标签 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;
}

操作系统 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/

相关文章:

PHP SOAP : Communication to a C++ application

c - 如何将C函数映射到LLVM IR?

c++ - 为什么我应该在 C++ 中使用 typedef 声明一个枚举?

c++ - 用于 DOS 的古老 C++ 编译器和 IDE

ios - 如何在 iOS 上删除 UIBarButtonItem tintColor 动画?

ios - UIImagePickerControllerReferenceURL 总是返回 nill

ios - 在 iOS 中使用多点触控绘图撤消

clang - 在哪里可以找到 LangOptions 方法的详尽列表

c++ - LLVM 检查一个 PointerType 是否是一个 Const 指针

c++ - CL_UNSIGNED_INT8 和 CL_RGB 不兼容