Print a typo correction hint for unknown warning flags.

$ clang -Wololo t.c
warning: unknown warning option '-Wololo'; did you mean '-Wall'? [-Wunknown-warning-option]

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@144591 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Frontend/Warnings.cpp b/lib/Frontend/Warnings.cpp
index 7fcbe3a..ba0cd38 100644
--- a/lib/Frontend/Warnings.cpp
+++ b/lib/Frontend/Warnings.cpp
@@ -120,7 +120,9 @@
         } else if (DiagIDs->getDiagnosticsInGroup(Specifier, _Diags)) {
           Diags.Report(isPositive ? diag::warn_unknown_warning_option :
                        diag::warn_unknown_negative_warning_option)
-            << ("-W" + Opt.str());
+            << ("-W" + Opt.str())
+            << ("-Werror=" +
+                DiagnosticIDs::getNearestWarningOption(Specifier).str());
         }
         continue;
       }
@@ -150,7 +152,9 @@
         } else if (DiagIDs->getDiagnosticsInGroup(Specifier, _Diags)) {
           Diags.Report(isPositive ? diag::warn_unknown_warning_option :
                        diag::warn_unknown_negative_warning_option)
-            << ("-W" + Opt.str());
+            << ("-W" + Opt.str())
+            << ("-Wfatal-errors=" +
+                DiagnosticIDs::getNearestWarningOption(Specifier).str());
         }
         continue;
       }
@@ -158,7 +162,8 @@
       if (Report && DiagIDs->getDiagnosticsInGroup(Opt, _Diags)) {
         Diags.Report(isPositive ? diag::warn_unknown_warning_option :
                      diag::warn_unknown_negative_warning_option)
-          << ("-W" + Opt.str());
+          << ("-W" + Opt.str())
+          << ("-W" + DiagnosticIDs::getNearestWarningOption(Opt).str());
       } else {
         Diags.setDiagnosticGroupMapping(Opt, Mapping);
       }