diff options
Diffstat (limited to 'contrib/llvm/lib/TableGen/Main.cpp')
-rw-r--r-- | contrib/llvm/lib/TableGen/Main.cpp | 44 |
1 files changed, 21 insertions, 23 deletions
diff --git a/contrib/llvm/lib/TableGen/Main.cpp b/contrib/llvm/lib/TableGen/Main.cpp index bb590c7..278b567 100644 --- a/contrib/llvm/lib/TableGen/Main.cpp +++ b/contrib/llvm/lib/TableGen/Main.cpp @@ -17,6 +17,7 @@ #include "llvm/TableGen/Main.h" #include "TGParser.h" +#include "llvm/ADT/StringExtras.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/MemoryBuffer.h" @@ -45,22 +46,25 @@ static cl::list<std::string> IncludeDirs("I", cl::desc("Directory of include files"), cl::value_desc("directory"), cl::Prefix); +static int reportError(const char *ProgName, Twine Msg) { + errs() << ProgName << ": " << Msg; + errs().flush(); + return 1; +} + /// \brief Create a dependency file for `-d` option. /// /// This functionality is really only for the benefit of the build system. /// It is similar to GCC's `-M*` family of options. static int createDependencyFile(const TGParser &Parser, const char *argv0) { - if (OutputFilename == "-") { - errs() << argv0 << ": the option -d must be used together with -o\n"; - return 1; - } + if (OutputFilename == "-") + return reportError(argv0, "the option -d must be used together with -o\n"); + std::error_code EC; tool_output_file DepOut(DependFilename, EC, sys::fs::F_Text); - if (EC) { - errs() << argv0 << ": error opening " << DependFilename << ":" - << EC.message() << "\n"; - return 1; - } + if (EC) + return reportError(argv0, "error opening " + DependFilename + ":" + + EC.message() + "\n"); DepOut.os() << OutputFilename << ":"; for (const auto &Dep : Parser.getDependencies()) { DepOut.os() << ' ' << Dep.first; @@ -76,11 +80,9 @@ int llvm::TableGenMain(char *argv0, TableGenMainFn *MainFn) { // Parse the input file. ErrorOr<std::unique_ptr<MemoryBuffer>> FileOrErr = MemoryBuffer::getFileOrSTDIN(InputFilename); - if (std::error_code EC = FileOrErr.getError()) { - errs() << "Could not open input file '" << InputFilename - << "': " << EC.message() << "\n"; - return 1; - } + if (std::error_code EC = FileOrErr.getError()) + return reportError(argv0, "Could not open input file '" + InputFilename + + "': " + EC.message() + "\n"); // Tell SrcMgr about this buffer, which is what TGParser will pick up. SrcMgr.AddNewSourceBuffer(std::move(*FileOrErr), SMLoc()); @@ -96,11 +98,9 @@ int llvm::TableGenMain(char *argv0, TableGenMainFn *MainFn) { std::error_code EC; tool_output_file Out(OutputFilename, EC, sys::fs::F_Text); - if (EC) { - errs() << argv0 << ": error opening " << OutputFilename << ":" - << EC.message() << "\n"; - return 1; - } + if (EC) + return reportError(argv0, "error opening " + OutputFilename + ":" + + EC.message() + "\n"); if (!DependFilename.empty()) { if (int Ret = createDependencyFile(Parser, argv0)) return Ret; @@ -109,10 +109,8 @@ int llvm::TableGenMain(char *argv0, TableGenMainFn *MainFn) { if (MainFn(Out.os(), Records)) return 1; - if (ErrorsPrinted > 0) { - errs() << argv0 << ": " << ErrorsPrinted << " errors.\n"; - return 1; - } + if (ErrorsPrinted > 0) + return reportError(argv0, utostr(ErrorsPrinted) + " errors.\n"); // Declare success. Out.keep(); |