summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
Diffstat (limited to 'clang')
-rw-r--r--clang/include/clang/Basic/Diagnostic.h4
-rw-r--r--clang/include/clang/Basic/Diagnostic.td13
-rw-r--r--clang/include/clang/Basic/DiagnosticFrontendKinds.td2
-rw-r--r--clang/include/clang/Basic/DiagnosticIDs.h4
-rw-r--r--clang/include/clang/Basic/DiagnosticLexKinds.td4
-rw-r--r--clang/lib/Basic/DiagnosticIDs.cpp14
-rw-r--r--clang/utils/TableGen/ClangDiagnosticsEmitter.cpp3
7 files changed, 22 insertions, 22 deletions
diff --git a/clang/include/clang/Basic/Diagnostic.h b/clang/include/clang/Basic/Diagnostic.h
index b0f52165bb2..b9da131de38 100644
--- a/clang/include/clang/Basic/Diagnostic.h
+++ b/clang/include/clang/Basic/Diagnostic.h
@@ -651,8 +651,8 @@ public:
/// \param Loc The source location we are interested in finding out the
/// diagnostic state. Can be null in order to query the latest state.
bool isIgnored(unsigned DiagID, SourceLocation Loc) const {
- return Diags->getDiagnosticLevel(DiagID, Loc, *this) ==
- DiagnosticIDs::Ignored;
+ return Diags->getDiagnosticSeverity(DiagID, Loc, *this) ==
+ diag::Severity::Ignored;
}
/// \brief Based on the way the client configured the DiagnosticsEngine
diff --git a/clang/include/clang/Basic/Diagnostic.td b/clang/include/clang/Basic/Diagnostic.td
index dd16a6a78ce..978fd59ad85 100644
--- a/clang/include/clang/Basic/Diagnostic.td
+++ b/clang/include/clang/Basic/Diagnostic.td
@@ -69,7 +69,7 @@ class Diagnostic<string text, DiagClass DC, Severity defaultmapping> {
SFINAEResponse SFINAE = SFINAE_Suppress;
bit AccessControl = 0;
bit WarningNoWerror = 0;
- bit WarningShowInSystemHeader = 0;
+ bit ShowInSystemHeader = 0;
Severity DefaultSeverity = defaultmapping;
DiagGroup Group;
string CategoryName = "";
@@ -85,8 +85,14 @@ class AccessControl {
SFINAEResponse SFINAE = SFINAE_AccessControl;
}
+class ShowInSystemHeader {
+ bit ShowInSystemHeader = 1;
+}
+
// FIXME: ExtWarn and Extension should also be SFINAEFailure by default.
-class Error<string str> : Diagnostic<str, CLASS_ERROR, SEV_Error>, SFINAEFailure;
+class Error<string str> : Diagnostic<str, CLASS_ERROR, SEV_Error>, SFINAEFailure {
+ bit ShowInSystemHeader = 1;
+}
class Warning<string str> : Diagnostic<str, CLASS_WARNING, SEV_Warning>;
class Remark<string str> : Diagnostic<str, CLASS_REMARK, SEV_Ignored>;
class Extension<string str> : Diagnostic<str, CLASS_EXTENSION, SEV_Ignored>;
@@ -101,9 +107,6 @@ class DefaultFatal { Severity DefaultSeverity = SEV_Fatal; }
class DefaultWarnNoWerror {
bit WarningNoWerror = 1;
}
-class DefaultWarnShowInSystemHeader {
- bit WarningShowInSystemHeader = 1;
-}
class DefaultRemark { Severity DefaultSeverity = SEV_Remark; }
// Definitions for Diagnostics.
diff --git a/clang/include/clang/Basic/DiagnosticFrontendKinds.td b/clang/include/clang/Basic/DiagnosticFrontendKinds.td
index c084254b0f4..2d6ca696955 100644
--- a/clang/include/clang/Basic/DiagnosticFrontendKinds.td
+++ b/clang/include/clang/Basic/DiagnosticFrontendKinds.td
@@ -7,7 +7,7 @@
//
//===----------------------------------------------------------------------===//
-class BackendInfo : CatBackend, DefaultWarnShowInSystemHeader;
+class BackendInfo : CatBackend, ShowInSystemHeader;
let Component = "Frontend" in {
diff --git a/clang/include/clang/Basic/DiagnosticIDs.h b/clang/include/clang/Basic/DiagnosticIDs.h
index 8b670500cf3..c28f195b226 100644
--- a/clang/include/clang/Basic/DiagnosticIDs.h
+++ b/clang/include/clang/Basic/DiagnosticIDs.h
@@ -254,10 +254,8 @@ private:
getDiagnosticLevel(unsigned DiagID, SourceLocation Loc,
const DiagnosticsEngine &Diag) const LLVM_READONLY;
- /// \brief An internal implementation helper used when \p DiagClass is
- /// already known.
diag::Severity
- getDiagnosticSeverity(unsigned DiagID, unsigned DiagClass, SourceLocation Loc,
+ getDiagnosticSeverity(unsigned DiagID, SourceLocation Loc,
const DiagnosticsEngine &Diag) const LLVM_READONLY;
/// \brief Used to report a diagnostic that is finally fully formed.
diff --git a/clang/include/clang/Basic/DiagnosticLexKinds.td b/clang/include/clang/Basic/DiagnosticLexKinds.td
index 88b4da5d37c..4aceaf5e4f0 100644
--- a/clang/include/clang/Basic/DiagnosticLexKinds.td
+++ b/clang/include/clang/Basic/DiagnosticLexKinds.td
@@ -247,7 +247,7 @@ def err_invalid_pth_file : Error<
let CategoryName = "User Defined Issues" in {
def pp_hash_warning : Warning<"%0">,
- InGroup<PoundWarning>, DefaultWarnShowInSystemHeader;
+ InGroup<PoundWarning>, ShowInSystemHeader;
def err_pp_hash_error : Error<"%0">;
}
@@ -544,7 +544,7 @@ def err_pp_eof_in_arc_cf_code_audited : Error<
def warn_pp_date_time : Warning<
"expansion of date or time macro is not reproducible">,
- DefaultWarnShowInSystemHeader, DefaultIgnore, InGroup<DiagGroup<"date-time">>;
+ ShowInSystemHeader, DefaultIgnore, InGroup<DiagGroup<"date-time">>;
// Module map parsing
def err_mmap_unknown_token : Error<"skipping stray token">;
diff --git a/clang/lib/Basic/DiagnosticIDs.cpp b/clang/lib/Basic/DiagnosticIDs.cpp
index 6bc230a33ca..8fae207e8ea 100644
--- a/clang/lib/Basic/DiagnosticIDs.cpp
+++ b/clang/lib/Basic/DiagnosticIDs.cpp
@@ -394,7 +394,7 @@ DiagnosticIDs::getDiagnosticLevel(unsigned DiagID, SourceLocation Loc,
unsigned DiagClass = getBuiltinDiagClass(DiagID);
if (DiagClass == CLASS_NOTE) return DiagnosticIDs::Note;
- return toLevel(getDiagnosticSeverity(DiagID, DiagClass, Loc, Diag));
+ return toLevel(getDiagnosticSeverity(DiagID, Loc, Diag));
}
/// \brief Based on the way the client configured the Diagnostic
@@ -404,10 +404,9 @@ DiagnosticIDs::getDiagnosticLevel(unsigned DiagID, SourceLocation Loc,
/// \param Loc The source location we are interested in finding out the
/// diagnostic state. Can be null in order to query the latest state.
diag::Severity
-DiagnosticIDs::getDiagnosticSeverity(unsigned DiagID, unsigned DiagClass,
- SourceLocation Loc,
+DiagnosticIDs::getDiagnosticSeverity(unsigned DiagID, SourceLocation Loc,
const DiagnosticsEngine &Diag) const {
- assert(DiagClass != CLASS_NOTE);
+ assert(getBuiltinDiagClass(DiagID) != CLASS_NOTE);
// Specific non-error diagnostics may be mapped to various levels from ignored
// to error. Errors can only be mapped to fatal.
@@ -431,7 +430,9 @@ DiagnosticIDs::getDiagnosticSeverity(unsigned DiagID, unsigned DiagClass,
// Diagnostics of class REMARK are either printed as remarks or in case they
// have been added to -Werror they are printed as errors.
- if (DiagClass == CLASS_REMARK && Result == diag::Severity::Warning)
+ // FIXME: Disregarding user-requested remark mappings like this is bogus.
+ if (Result == diag::Severity::Warning &&
+ getBuiltinDiagClass(DiagID) == CLASS_REMARK)
Result = diag::Severity::Remark;
// Ignore -pedantic diagnostics inside __extension__ blocks.
@@ -491,8 +492,7 @@ DiagnosticIDs::getDiagnosticSeverity(unsigned DiagID, unsigned DiagClass,
// If we are in a system header, we ignore it. We look at the diagnostic class
// because we also want to ignore extensions and warnings in -Werror and
// -pedantic-errors modes, which *map* warnings/extensions to errors.
- if (Result >= diag::Severity::Warning && DiagClass != CLASS_ERROR &&
- !ShowInSystemHeader && Diag.SuppressSystemWarnings && Loc.isValid() &&
+ if (Diag.SuppressSystemWarnings && !ShowInSystemHeader && Loc.isValid() &&
Diag.getSourceManager().isInSystemHeader(
Diag.getSourceManager().getExpansionLoc(Loc)))
return diag::Severity::Ignored;
diff --git a/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp b/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp
index 76b484e7837..e5177554177 100644
--- a/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp
+++ b/clang/utils/TableGen/ClangDiagnosticsEmitter.cpp
@@ -571,8 +571,7 @@ void EmitClangDiagsDefs(RecordKeeper &Records, raw_ostream &OS,
else
OS << ", false";
- // Default warning show in system header bit.
- if (R.getValueAsBit("WarningShowInSystemHeader"))
+ if (R.getValueAsBit("ShowInSystemHeader"))
OS << ", true";
else
OS << ", false";
OpenPOWER on IntegriCloud