]> granicus.if.org Git - clang/commitdiff
Move the warning options from Warnings.cpp to clang-cc.cpp.
authorEli Friedman <eli.friedman@gmail.com>
Tue, 19 May 2009 01:17:04 +0000 (01:17 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Tue, 19 May 2009 01:17:04 +0000 (01:17 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72089 91177308-0d34-0410-b5e6-96231b3b80d8

tools/clang-cc/Warnings.cpp
tools/clang-cc/clang-cc.cpp
tools/clang-cc/clang-cc.h

index c3a6b2132a692c907c1bf7d435b91a112e36a1e4..b3e21e105273494eb01d06927a7c1087bbeb5311 100644 (file)
 #include <algorithm>
 using namespace clang;
 
-// This gets all -W options, including -Werror, -W[no-]system-headers, etc.  The
-// driver has stripped off -Wa,foo etc.  The driver has also translated -W to
-// -Wextra, so we don't need to worry about it.
-static llvm::cl::list<std::string>
-OptWarnings("W", llvm::cl::Prefix, llvm::cl::ValueOptional);
-
-static llvm::cl::opt<bool> OptPedantic("pedantic");
-static llvm::cl::opt<bool> OptPedanticErrors("pedantic-errors");
-static llvm::cl::opt<bool> OptNoWarnings("w");
-
-bool clang::ProcessWarningOptions(Diagnostic &Diags) {
+bool clang::ProcessWarningOptions(Diagnostic &Diags,
+                                  std::vector<std::string> &Warnings,
+                                  bool Pedantic, bool PedanticErrors,
+                                  bool NoWarnings) {
   Diags.setSuppressSystemWarnings(true);  // Default to -Wno-system-headers
-  Diags.setIgnoreAllWarnings(OptNoWarnings);
+  Diags.setIgnoreAllWarnings(NoWarnings);
 
   // If -pedantic or -pedantic-errors was specified, then we want to map all
   // extension diagnostics onto WARNING or ERROR unless the user has futz'd
   // around with them explicitly.
-  if (OptPedanticErrors)
+  if (PedanticErrors)
     Diags.setExtensionHandlingBehavior(Diagnostic::Ext_Error);
-  else if (OptPedantic)
+  else if (Pedantic)
     Diags.setExtensionHandlingBehavior(Diagnostic::Ext_Warn);
   else
     Diags.setExtensionHandlingBehavior(Diagnostic::Ext_Ignore);
   
   // FIXME: -Wfatal-errors / -Wfatal-errors=foo
 
-  for (unsigned i = 0, e = OptWarnings.size(); i != e; ++i) {
-    const std::string &Opt = OptWarnings[i];
+  for (unsigned i = 0, e = Warnings.size(); i != e; ++i) {
+    const std::string &Opt = Warnings[i];
     const char *OptStart = &Opt[0];
     const char *OptEnd = OptStart+Opt.size();
     assert(*OptEnd == 0 && "Expect null termination for lower-bound search");
index 4bf92577fd089141251043872bb6a81c297cfd99..81a819e38d2c7358984ecffd78b3b1a9c1d64014 100644 (file)
@@ -1496,6 +1496,20 @@ static llvm::cl::opt<bool>
 SilenceRewriteMacroWarning("Wno-rewrite-macros", llvm::cl::init(false),
                            llvm::cl::desc("Silence ObjC rewriting warnings"));
 
+//===----------------------------------------------------------------------===//
+// Warning Options
+//===----------------------------------------------------------------------===//
+
+// This gets all -W options, including -Werror, -W[no-]system-headers, etc.  The
+// driver has stripped off -Wa,foo etc.  The driver has also translated -W to
+// -Wextra, so we don't need to worry about it.
+static llvm::cl::list<std::string>
+OptWarnings("W", llvm::cl::Prefix, llvm::cl::ValueOptional);
+
+static llvm::cl::opt<bool> OptPedantic("pedantic");
+static llvm::cl::opt<bool> OptPedanticErrors("pedantic-errors");
+static llvm::cl::opt<bool> OptNoWarnings("w");
+
 //===----------------------------------------------------------------------===//
 // -dump-build-information Stuff
 //===----------------------------------------------------------------------===//
@@ -2028,7 +2042,8 @@ int main(int argc, char **argv) {
 
   // Configure our handling of diagnostics.
   Diagnostic Diags(DiagClient.get());
-  if (ProcessWarningOptions(Diags))
+  if (ProcessWarningOptions(Diags, OptWarnings, OptPedantic, OptPedanticErrors,
+                            OptNoWarnings))
     return 1;
 
   // -I- is a deprecated GCC feature, scan for it and reject it.
index bdd79cdc989a54af9697b13e871bfcfd4e0149a2..b08345c18854a36dc2849032e69fe703f7993300 100644 (file)
@@ -35,7 +35,10 @@ class LangOptions;
 
 /// ProcessWarningOptions - Initialize the diagnostic client and process the
 /// warning options specified on the command line.
-bool ProcessWarningOptions(Diagnostic &Diags);
+bool ProcessWarningOptions(Diagnostic &Diags,
+                           std::vector<std::string> &Warnings,
+                           bool Pedantic, bool PedanticErrors,
+                           bool NoWarnings);
 
 /// DoPrintPreprocessedInput - Implement -E mode.
 void DoPrintPreprocessedInput(Preprocessor &PP, llvm::raw_ostream* OS);