]> granicus.if.org Git - clang/commitdiff
Improve error messages on bad warning options.
authorSebastian Redl <sebastian.redl@getdesigned.at>
Sat, 7 Mar 2009 12:09:25 +0000 (12:09 +0000)
committerSebastian Redl <sebastian.redl@getdesigned.at>
Sat, 7 Mar 2009 12:09:25 +0000 (12:09 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66334 91177308-0d34-0410-b5e6-96231b3b80d8

Driver/Warnings.cpp
Driver/clang.cpp

index eda398be24efcb5f05110799255abf79d971243d..8ef1ff57dbce68d2e49ae20a932f038dfc2a8f8a 100644 (file)
@@ -22,8 +22,7 @@
 // warn:   Emit a message, but don't fail the compilation
 // error:  Emit a message and fail the compilation
 //
-// Clang is parsed warning options. Each warning option controls any number of
-// actual warnings.
+// Each warning option controls any number of actual warnings.
 // Given a warning option 'foo', the following are valid:
 // -Wfoo=ignore  -> Ignore the controlled warnings.
 // -Wfoo=warn    -> Warn about the controlled warnings.
@@ -87,8 +86,11 @@ namespace {
       } else {
         Val.Name = ArgValue.substr(0, Eq);
         Val.Mapping = StrToMapping(ArgValue.substr(Eq+1));
-        if (Val.Mapping == diag::MAP_DEFAULT)
+        if (Val.Mapping == diag::MAP_DEFAULT) {
+          fprintf(stderr, "Illegal warning option value: %s\n",
+                  ArgValue.substr(Eq+1).c_str());
           return true;
+        }
       }
       return false;
     }
@@ -203,8 +205,10 @@ bool ProcessWarningOptions(Diagnostic &Diags) {
                                                   OptionTable + OptionTableSize,
                                                   Key);
     if (Found == OptionTable + OptionTableSize ||
-        strcmp(Found->Name, Key.Name) != 0)
+        strcmp(Found->Name, Key.Name) != 0) {
+      fprintf(stderr, "Unknown warning option: -W%s\n", Key.Name);
       return true;
+    }
 
     // Option exists.
     for (size_t i = 0; i < Found->NumMembers; ++i) {
index 53ba7f8f093307b2daf622aa90582604aa500eb5..adfc8602fdb9c2187ebb3851ca79cde3ea1bfe87 100644 (file)
@@ -1504,11 +1504,8 @@ int main(int argc, char **argv) {
   // Configure our handling of diagnostics.
   llvm::OwningPtr<DiagnosticClient> DiagClient(TextDiagClient);
   Diagnostic Diags(DiagClient.get());
-  if (ProcessWarningOptions(Diags)) {
-    fprintf(stderr, "Error in warning options.\n");
+  if (ProcessWarningOptions(Diags))
     return 1;
-  }
-  //InitializeDiagnostics(Diags);  
 
   // -I- is a deprecated GCC feature, scan for it and reject it.
   for (unsigned i = 0, e = I_dirs.size(); i != e; ++i) {
@@ -1527,7 +1524,7 @@ int main(int argc, char **argv) {
     fprintf(stderr, "Sorry, I don't know what target this is: %s\n",
             Triple.c_str());
     fprintf(stderr, "Please use -triple or -arch.\n");
-    exit(1);
+    return 1;
   }
   
   if (!InheritanceViewCls.empty())  // C++ visualization?