diff options
author | Sean Silva <chisophugis@gmail.com> | 2014-08-15 18:58:12 +0000 |
---|---|---|
committer | Sean Silva <chisophugis@gmail.com> | 2014-08-15 18:58:12 +0000 |
commit | 22b4a3444c04abc6c0dea731299849ea9d671c5c (patch) | |
tree | c4783bb4495acf3dae37951cd86e924cb63318c9 /clang/tools/driver/driver.cpp | |
parent | 965bb99180350eec0a48549789d350aa121bf422 (diff) | |
download | bcm5719-llvm-22b4a3444c04abc6c0dea731299849ea9d671c5c.tar.gz bcm5719-llvm-22b4a3444c04abc6c0dea731299849ea9d671c5c.zip |
[cleanup] Factor out initializing the DianosticOptions. NFC.
llvm-svn: 215755
Diffstat (limited to 'clang/tools/driver/driver.cpp')
-rw-r--r-- | clang/tools/driver/driver.cpp | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/clang/tools/driver/driver.cpp b/clang/tools/driver/driver.cpp index d9cc527fbd3..1bb94a8ad81 100644 --- a/clang/tools/driver/driver.cpp +++ b/clang/tools/driver/driver.cpp @@ -320,6 +320,22 @@ static void FixupDiagPrefixExeName(TextDiagnosticPrinter *DiagClient, DiagClient->setPrefix(ExeBasename); } +// This lets us create the DiagnosticsEngine with a properly-filled-out +// DiagnosticOptions instance. +static DiagnosticOptions * +CreateAndPopulateDiagOpts(SmallVectorImpl<const char *> &argv) { + auto *DiagOpts = new DiagnosticOptions; + std::unique_ptr<OptTable> Opts(createDriverOptTable()); + unsigned MissingArgIndex, MissingArgCount; + std::unique_ptr<InputArgList> Args(Opts->ParseArgs( + argv.begin() + 1, argv.end(), MissingArgIndex, MissingArgCount)); + // We ignore MissingArgCount and the return value of ParseDiagnosticArgs. + // Any errors that would be diagnosed here will also be diagnosed later, + // when the DiagnosticsEngine actually exists. + (void) ParseDiagnosticArgs(*DiagOpts, *Args); + return DiagOpts; +} + int main(int argc_, const char **argv_) { llvm::sys::PrintStackTraceOnErrorSignal(); llvm::PrettyStackTraceProgram X(argc_, argv_); @@ -370,19 +386,9 @@ int main(int argc_, const char **argv_) { std::string Path = GetExecutablePath(argv[0], CanonicalPrefixes); - IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions; - { - std::unique_ptr<OptTable> Opts(createDriverOptTable()); - unsigned MissingArgIndex, MissingArgCount; - std::unique_ptr<InputArgList> Args(Opts->ParseArgs( - argv.begin() + 1, argv.end(), MissingArgIndex, MissingArgCount)); - // We ignore MissingArgCount and the return value of ParseDiagnosticArgs. - // Any errors that would be diagnosed here will also be diagnosed later, - // when the DiagnosticsEngine actually exists. - (void) ParseDiagnosticArgs(*DiagOpts, *Args); - } - // Now we can create the DiagnosticsEngine with a properly-filled-out - // DiagnosticOptions instance. + IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = + CreateAndPopulateDiagOpts(argv); + TextDiagnosticPrinter *DiagClient = new TextDiagnosticPrinter(llvm::errs(), &*DiagOpts); FixupDiagPrefixExeName(DiagClient, Path); |