Author: mcrosier
Date: Mon Jan 14 19:21:53 2013
New Revision: 172497

URL: http://llvm.org/viewvc/llvm-project?rev=172497&view=rev
Log:
[driver] Warnings for warning options are handled by the frontend.  The driver 
needs to process the
warning options to setup diagnostic state, but should not be emitting warnings 
as these would be
rudndant with what the frontend emits.
rdar://13001556

Added:
    cfe/trunk/test/Frontend/warning-options.cpp
Modified:
    cfe/trunk/include/clang/Frontend/Utils.h
    cfe/trunk/lib/Frontend/Warnings.cpp
    cfe/trunk/test/Driver/warning-options.cpp
    cfe/trunk/tools/driver/driver.cpp

Modified: cfe/trunk/include/clang/Frontend/Utils.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/Utils.h?rev=172497&r1=172496&r2=172497&view=diff
==============================================================================
--- cfe/trunk/include/clang/Frontend/Utils.h (original)
+++ cfe/trunk/include/clang/Frontend/Utils.h Mon Jan 14 19:21:53 2013
@@ -60,7 +60,8 @@
 /// ProcessWarningOptions - Initialize the diagnostic client and process the
 /// warning options specified on the command line.
 void ProcessWarningOptions(DiagnosticsEngine &Diags,
-                           const DiagnosticOptions &Opts);
+                           const DiagnosticOptions &Opts,
+                           bool ReportDiags = true);
 
 /// DoPrintPreprocessedInput - Implement -E mode.
 void DoPrintPreprocessedInput(Preprocessor &PP, raw_ostream* OS,

Modified: cfe/trunk/lib/Frontend/Warnings.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/Warnings.cpp?rev=172497&r1=172496&r2=172497&view=diff
==============================================================================
--- cfe/trunk/lib/Frontend/Warnings.cpp (original)
+++ cfe/trunk/lib/Frontend/Warnings.cpp Mon Jan 14 19:21:53 2013
@@ -48,7 +48,8 @@
 }
 
 void clang::ProcessWarningOptions(DiagnosticsEngine &Diags,
-                                  const DiagnosticOptions &Opts) {
+                                  const DiagnosticOptions &Opts,
+                                  bool ReportDiags) {
   Diags.setSuppressSystemWarnings(true);  // Default to -Wno-system-headers
   Diags.setIgnoreAllWarnings(Opts.IgnoreWarnings);
   Diags.setShowOverloads(Opts.getShowOverloads());
@@ -84,6 +85,12 @@
   // conflicting options.
   for (unsigned Report = 0, ReportEnd = 2; Report != ReportEnd; ++Report) {
     bool SetDiagnostic = (Report == 0);
+
+    // If we've set the diagnostic state and are not reporting diagnostics then
+    // we're done.
+    if (!SetDiagnostic && !ReportDiags)
+      break;
+
     for (unsigned i = 0, e = Opts.Warnings.size(); i != e; ++i) {
       StringRef Opt = Opts.Warnings[i];
       StringRef OrigOpt = Opts.Warnings[i];

Modified: cfe/trunk/test/Driver/warning-options.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/warning-options.cpp?rev=172497&r1=172496&r2=172497&view=diff
==============================================================================
--- cfe/trunk/test/Driver/warning-options.cpp (original)
+++ cfe/trunk/test/Driver/warning-options.cpp Mon Jan 14 19:21:53 2013
@@ -3,12 +3,6 @@
 // RUN: %clang -### -Wlarge-by-value-copy=128 %s 2>&1 | FileCheck 
-check-prefix=LARGE_VALUE_COPY_JOINED %s
 // LARGE_VALUE_COPY_JOINED: -Wlarge-by-value-copy=128
 
-// RUN: %clang -### -c -Wmonkey -Wno-monkey -Wno-unused-command-line-arguments 
\
-// RUN:        -Wno-unused-command-line-argument %s 2>&1 | FileCheck %s
-// CHECK: unknown warning option '-Wmonkey'
-// CHECK: unknown warning option '-Wno-monkey'
-// CHECK: unknown warning option '-Wno-unused-command-line-arguments'; did you 
mean '-Wno-unused-command-line-argument'?
-
 // FIXME: Remove this together with -Warc-abi once an Xcode is released that 
doesn't pass this flag.
 // RUN: %clang -### -Warc-abi -Wno-arc-abi %s 2>&1 | FileCheck 
-check-prefix=ARCABI %s
 // ARCABI-NOT: unknown warning option '-Warc-abi'

Added: cfe/trunk/test/Frontend/warning-options.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Frontend/warning-options.cpp?rev=172497&view=auto
==============================================================================
--- cfe/trunk/test/Frontend/warning-options.cpp (added)
+++ cfe/trunk/test/Frontend/warning-options.cpp Mon Jan 14 19:21:53 2013
@@ -0,0 +1,5 @@
+// RUN: %clang_cc1 -Wmonkey -Wno-monkey -Wno-unused-command-line-arguments \
+// RUN:        -Wno-unused-command-line-argument %s 2>&1 | FileCheck %s
+// CHECK: unknown warning option '-Wmonkey'
+// CHECK: unknown warning option '-Wno-monkey'
+// CHECK: unknown warning option '-Wno-unused-command-line-arguments'; did you 
mean '-Wno-unused-command-line-argument'?

Modified: cfe/trunk/tools/driver/driver.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/driver.cpp?rev=172497&r1=172496&r2=172497&view=diff
==============================================================================
--- cfe/trunk/tools/driver/driver.cpp (original)
+++ cfe/trunk/tools/driver/driver.cpp Mon Jan 14 19:21:53 2013
@@ -395,7 +395,7 @@
   IntrusiveRefCntPtr<DiagnosticIDs> DiagID(new DiagnosticIDs());
 
   DiagnosticsEngine Diags(DiagID, &*DiagOpts, DiagClient);
-  ProcessWarningOptions(Diags, *DiagOpts);
+  ProcessWarningOptions(Diags, *DiagOpts, /*ReportDiags=*/false);
 
   Driver TheDriver(Path.str(), llvm::sys::getDefaultTargetTriple(),
                    "a.out", Diags);


_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to