X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTableGen%2FMain.cpp;h=c44045152a4d2063abdca3ab1e2ae15bb235edd0;hb=bed1965111fc29929e8b282c489e05c857610fb9;hp=e1cd6237832c5ace7ca554db988d4ca1fc00307b;hpb=a170f520a990a50c35f72d81b4415dc4c3ec50de;p=oota-llvm.git diff --git a/lib/TableGen/Main.cpp b/lib/TableGen/Main.cpp index e1cd6237832..c44045152a4 100644 --- a/lib/TableGen/Main.cpp +++ b/lib/TableGen/Main.cpp @@ -16,16 +16,16 @@ //===----------------------------------------------------------------------===// #include "TGParser.h" -#include "llvm/ADT/OwningPtr.h" #include "llvm/Support/CommandLine.h" +#include "llvm/Support/FileSystem.h" #include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/ToolOutputFile.h" -#include "llvm/Support/system_error.h" #include "llvm/TableGen/Error.h" #include "llvm/TableGen/Main.h" #include "llvm/TableGen/Record.h" #include #include +#include using namespace llvm; namespace { @@ -56,19 +56,16 @@ static int createDependencyFile(const TGParser &Parser, const char *argv0) { errs() << argv0 << ": the option -d must be used together with -o\n"; return 1; } - std::string Error; - tool_output_file DepOut(DependFilename.c_str(), Error); - if (!Error.empty()) { - errs() << argv0 << ": error opening " << DependFilename - << ":" << Error << "\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; } DepOut.os() << OutputFilename << ":"; - const TGLexer::DependenciesMapTy &Dependencies = Parser.getDependencies(); - for (TGLexer::DependenciesMapTy::const_iterator I = Dependencies.begin(), - E = Dependencies.end(); - I != E; ++I) { - DepOut.os() << " " << I->first; + for (const auto &Dep : Parser.getDependencies()) { + DepOut.os() << ' ' << Dep.first; } DepOut.os() << "\n"; DepOut.keep(); @@ -81,17 +78,16 @@ int TableGenMain(char *argv0, TableGenMainFn *MainFn) { RecordKeeper Records; // Parse the input file. - OwningPtr File; - if (error_code ec = - MemoryBuffer::getFileOrSTDIN(InputFilename.c_str(), File)) { - errs() << "Could not open input file '" << InputFilename << "': " - << ec.message() <<"\n"; + ErrorOr> FileOrErr = + MemoryBuffer::getFileOrSTDIN(InputFilename); + if (std::error_code EC = FileOrErr.getError()) { + errs() << "Could not open input file '" << InputFilename + << "': " << EC.message() << "\n"; return 1; } - MemoryBuffer *F = File.take(); // Tell SrcMgr about this buffer, which is what TGParser will pick up. - SrcMgr.AddNewSourceBuffer(F, SMLoc()); + SrcMgr.AddNewSourceBuffer(std::move(*FileOrErr), SMLoc()); // Record the location of the include directory so that the lexer can find // it later. @@ -102,11 +98,11 @@ int TableGenMain(char *argv0, TableGenMainFn *MainFn) { if (Parser.ParseFile()) return 1; - std::string Error; - tool_output_file Out(OutputFilename.c_str(), Error); - if (!Error.empty()) { - errs() << argv0 << ": error opening " << OutputFilename - << ":" << Error << "\n"; + 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 (!DependFilename.empty()) { @@ -117,11 +113,14 @@ int TableGenMain(char *argv0, TableGenMainFn *MainFn) { if (MainFn(Out.os(), Records)) return 1; + if (ErrorsPrinted > 0) { + errs() << argv0 << ": " << ErrorsPrinted << " errors.\n"; + return 1; + } + // Declare success. Out.keep(); return 0; - - return 1; } }