]> granicus.if.org Git - clang/commitdiff
Frontend: Sketch support for -diagnostic-log-file, which still doesn't do anything.
authorDaniel Dunbar <daniel@zuster.org>
Thu, 7 Apr 2011 18:11:14 +0000 (18:11 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 7 Apr 2011 18:11:14 +0000 (18:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129086 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticFrontendKinds.td
include/clang/Driver/CC1Options.td
include/clang/Frontend/DiagnosticOptions.h
lib/Frontend/CompilerInvocation.cpp

index 6ad9529c5f162403543048557b8fce268aeda23b..d93502c77479a23192f2baee062afeb137ceb374 100644 (file)
@@ -79,7 +79,7 @@ def warn_fe_macro_contains_embedded_newline : Warning<
     "macro '%0' contains embedded newline, text after the newline is ignored.">;
 def warn_fe_cc_print_header_failure : Warning<
     "unable to open CC_PRINT_HEADERS file: %0 (using stderr)">;
-def warn_fe_cc_log_diagnositcs_failure : Warning<
+def warn_fe_cc_log_diagnostics_failure : Warning<
     "unable to open CC_LOG_DIAGNOSTICS file: %0 (using stderr)">;
 
 def err_verify_missing_start : Error<
index 7c1a9f071e51f5f9c5ee0c71dd7a2af31aef5425..f2aba0dfcb549db62719a2020bea873808ea0ff0 100644 (file)
@@ -201,6 +201,8 @@ def MP : Flag<"-MP">,
 def dump_build_information : Separate<"-dump-build-information">,
   MetaVarName<"<filename>">,
   HelpText<"output a dump of some build information to a file">;
+def diagnostic_log_file : Separate<"-diagnostic-log-file">,
+  HelpText<"Filename (or -) to log diagnostics to">;
 def fno_show_column : Flag<"-fno-show-column">,
   HelpText<"Do not include column number on diagnostics">;
 def fno_show_source_location : Flag<"-fno-show-source-location">,
index 4e46b4fbf021aae1af3af1b71343054c8a1ff936..2193591368f159135fe71935d7cd07257a547334 100644 (file)
@@ -61,6 +61,9 @@ public:
   /// testing and analysis.
   std::string DumpBuildInformation;
 
+  /// The file to log diagnostic output to.
+  std::string DiagnosticLogFile;
+
   /// The list of -W... options used to alter the diagnostic mappings, with the
   /// prefixes removed.
   std::vector<std::string> Warnings;
index 4fc8b5bdf763cc03e4e1a4a47d36ed863749e536..df876d80c775624e5a366e5cdf249862f845a232 100644 (file)
@@ -273,6 +273,10 @@ static void DiagnosticOptsToArgs(const DiagnosticOptions &Opts,
     Res.push_back("-ferror-limit");
     Res.push_back(llvm::utostr(Opts.ErrorLimit));
   }
+  if (!Opts.DiagnosticLogFile.empty()) {
+    Res.push_back("-diagnostic-log-file");
+    Res.push_back(Opts.DiagnosticLogFile);
+  }
   if (Opts.MacroBacktraceLimit
                         != DiagnosticOptions::DefaultMacroBacktraceLimit) {
     Res.push_back("-fmacro-backtrace-limit");
@@ -981,6 +985,7 @@ static void ParseDependencyOutputArgs(DependencyOutputOptions &Opts,
 static void ParseDiagnosticArgs(DiagnosticOptions &Opts, ArgList &Args,
                                 Diagnostic &Diags) {
   using namespace cc1options;
+  Opts.DiagnosticLogFile = Args.getLastArgValue(OPT_diagnostic_log_file);
   Opts.IgnoreWarnings = Args.hasArg(OPT_w);
   Opts.NoRewriteMacros = Args.hasArg(OPT_Wno_rewrite_macros);
   Opts.Pedantic = Args.hasArg(OPT_pedantic);