diff options
author | Davide Italiano <davide@freebsd.org> | 2016-11-17 22:58:13 +0000 |
---|---|---|
committer | Davide Italiano <davide@freebsd.org> | 2016-11-17 22:58:13 +0000 |
commit | da8e6b2ec7ac75c400df7cc5563ce1aa6be27a5a (patch) | |
tree | 433fda1cf8f691e381fb143fe5b384e6882e9154 /llvm | |
parent | 6fa3b742e0c77d54c7f3914f929dcac1c37a81d8 (diff) | |
download | bcm5719-llvm-da8e6b2ec7ac75c400df7cc5563ce1aa6be27a5a.tar.gz bcm5719-llvm-da8e6b2ec7ac75c400df7cc5563ce1aa6be27a5a.zip |
[lli] Factor out error handling. NFCI.
llvm-svn: 287276
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/tools/lli/lli.cpp | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/llvm/tools/lli/lli.cpp b/llvm/tools/lli/lli.cpp index 836a94037d7..ecc90d7541c 100644 --- a/llvm/tools/lli/lli.cpp +++ b/llvm/tools/lli/lli.cpp @@ -357,6 +357,12 @@ CodeGenOpt::Level getOptLevel() { llvm_unreachable("Unrecognized opt level."); } +LLVM_ATTRIBUTE_NORETURN +static void reportError(SMDiagnostic Err, const char *ProgName) { + Err.print(ProgName, errs()); + exit(1); +} + //===----------------------------------------------------------------------===// // main Driver function // @@ -388,20 +394,16 @@ int main(int argc, char **argv, char * const *envp) { SMDiagnostic Err; std::unique_ptr<Module> Owner = parseIRFile(InputFile, Err, Context); Module *Mod = Owner.get(); - if (!Mod) { - Err.print(argv[0], errs()); - return 1; - } + if (!Mod) + reportError(Err, argv[0]); if (UseJITKind == JITKind::OrcLazy) { std::vector<std::unique_ptr<Module>> Ms; Ms.push_back(std::move(Owner)); for (auto &ExtraMod : ExtraModules) { Ms.push_back(parseIRFile(ExtraMod, Err, Context)); - if (!Ms.back()) { - Err.print(argv[0], errs()); - return 1; - } + if (!Ms.back()) + reportError(Err, argv[0]); } std::vector<std::string> Args; Args.push_back(InputFile); @@ -486,10 +488,8 @@ int main(int argc, char **argv, char * const *envp) { // Load any additional modules specified on the command line. for (unsigned i = 0, e = ExtraModules.size(); i != e; ++i) { std::unique_ptr<Module> XMod = parseIRFile(ExtraModules[i], Err, Context); - if (!XMod) { - Err.print(argv[0], errs()); - return 1; - } + if (!XMod) + reportError(Err, argv[0]); if (EnableCacheManager) { std::string CacheName("file:"); CacheName.append(ExtraModules[i]); @@ -504,8 +504,7 @@ int main(int argc, char **argv, char * const *envp) { if (!Obj) { // TODO: Actually report errors helpfully. consumeError(Obj.takeError()); - Err.print(argv[0], errs()); - return 1; + reportError(Err, argv[0]); } object::OwningBinary<object::ObjectFile> &O = Obj.get(); EE->addObjectFile(std::move(O)); @@ -514,10 +513,8 @@ int main(int argc, char **argv, char * const *envp) { for (unsigned i = 0, e = ExtraArchives.size(); i != e; ++i) { ErrorOr<std::unique_ptr<MemoryBuffer>> ArBufOrErr = MemoryBuffer::getFileOrSTDIN(ExtraArchives[i]); - if (!ArBufOrErr) { - Err.print(argv[0], errs()); - return 1; - } + if (!ArBufOrErr) + reportError(Err, argv[0]); std::unique_ptr<MemoryBuffer> &ArBuf = ArBufOrErr.get(); Expected<std::unique_ptr<object::Archive>> ArOrErr = |