diff options
| author | Dan Gohman <gohman@apple.com> | 2008-08-21 15:33:45 +0000 |
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2008-08-21 15:33:45 +0000 |
| commit | f3e13bbd4dd3b9bd501b448b7e5762f05c875071 (patch) | |
| tree | b2173d33bbd958e82ced1835a154a3335db2951f /llvm | |
| parent | b2fc05227c376f2efb833dcb132fc8a1f7a03855 (diff) | |
| download | bcm5719-llvm-f3e13bbd4dd3b9bd501b448b7e5762f05c875071.tar.gz bcm5719-llvm-f3e13bbd4dd3b9bd501b448b7e5762f05c875071.zip | |
Don't silently ignore errors when opening output streams.
llvm-svn: 55120
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/tools/llc/llc.cpp | 11 | ||||
| -rw-r--r-- | llvm/tools/lto/LTOCodeGenerator.cpp | 5 |
2 files changed, 12 insertions, 4 deletions
diff --git a/llvm/tools/llc/llc.cpp b/llvm/tools/llc/llc.cpp index 2c725e8a2f1..03972b10ca7 100644 --- a/llvm/tools/llc/llc.cpp +++ b/llvm/tools/llc/llc.cpp @@ -125,7 +125,14 @@ static raw_ostream *GetOutputStream(const char *ProgName) { sys::RemoveFileOnSignal(sys::Path(OutputFilename)); std::string error; - return new raw_fd_ostream(OutputFilename.c_str(), error); + raw_ostream *Out = new raw_fd_ostream(OutputFilename.c_str(), error); + if (!error.empty()) { + std::cerr << error << '\n'; + delete Out; + return 0; + } + + return Out; } if (InputFilename == "-") { @@ -170,7 +177,7 @@ static raw_ostream *GetOutputStream(const char *ProgName) { std::string error; raw_ostream *Out = new raw_fd_ostream(OutputFilename.c_str(), error); if (!error.empty()) { - std::cerr << error; + std::cerr << error << '\n'; delete Out; return 0; } diff --git a/llvm/tools/lto/LTOCodeGenerator.cpp b/llvm/tools/lto/LTOCodeGenerator.cpp index 275aac208f3..c035be99873 100644 --- a/llvm/tools/lto/LTOCodeGenerator.cpp +++ b/llvm/tools/lto/LTOCodeGenerator.cpp @@ -163,10 +163,11 @@ const void* LTOCodeGenerator::compile(size_t* length, std::string& errMsg) sys::RemoveFileOnSignal(uniqueAsmPath); // generate assembly code - std::string error; bool genResult = false; { - raw_fd_ostream asmFile(uniqueAsmPath.c_str(), error); + raw_fd_ostream asmFile(uniqueAsmPath.c_str(), errMsg); + if (!errMsg.empty()) + return NULL; genResult = this->generateAssemblyCode(asmFile, errMsg); } if ( genResult ) { |

