Implement support for -w, which silences all warnings. PR2384.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@51683 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Basic/Diagnostic.cpp b/lib/Basic/Diagnostic.cpp
index 5835e75..fbf118f 100644
--- a/lib/Basic/Diagnostic.cpp
+++ b/lib/Basic/Diagnostic.cpp
@@ -108,6 +108,7 @@
//===----------------------------------------------------------------------===//
Diagnostic::Diagnostic(DiagnosticClient &client) : Client(client) {
+ IgnoreAllWarnings = false;
WarningsAsErrors = false;
WarnOnExtensions = false;
ErrorOnExtensions = false;
@@ -167,7 +168,7 @@
if (DiagClass < ERROR) {
switch (getDiagnosticMapping((diag::kind)DiagID)) {
case diag::MAP_DEFAULT: break;
- case diag::MAP_IGNORE: return Ignored;
+ case diag::MAP_IGNORE: return Diagnostic::Ignored;
case diag::MAP_WARNING: DiagClass = WARNING; break;
case diag::MAP_ERROR: DiagClass = ERROR; break;
}
@@ -183,9 +184,13 @@
return Ignored;
}
- // If warnings are to be treated as errors, indicate this as such.
- if (DiagClass == WARNING && WarningsAsErrors)
- DiagClass = ERROR;
+ // If warnings are globally mapped to ignore or error, do it.
+ if (DiagClass == WARNING) {
+ if (IgnoreAllWarnings)
+ return Diagnostic::Ignored;
+ if (WarningsAsErrors)
+ DiagClass = ERROR;
+ }
switch (DiagClass) {
default: assert(0 && "Unknown diagnostic class!");