r211023 - Use the ShowInSystemHeader bit consistently for all diagnostics

Alp Toker alp at nuanti.com
Mon Jun 16 06:56:47 PDT 2014


Author: alp
Date: Mon Jun 16 08:56:47 2014
New Revision: 211023

URL: http://llvm.org/viewvc/llvm-project?rev=211023&view=rev
Log:
Use the ShowInSystemHeader bit consistently for all diagnostics

By describing system header suppressions directly in tablegen we eliminate
special cases in getDiagnosticSeverity().

Dropping the reliance on builtin diagnostic classes when mapping also gets us
closer to the goal of reusing the diagnostic machinery for custom diagnostics.

No change in functionality.

Modified:
    cfe/trunk/include/clang/Basic/Diagnostic.h
    cfe/trunk/include/clang/Basic/Diagnostic.td
    cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td
    cfe/trunk/include/clang/Basic/DiagnosticIDs.h
    cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td
    cfe/trunk/lib/Basic/DiagnosticIDs.cpp
    cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp

Modified: cfe/trunk/include/clang/Basic/Diagnostic.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diagnostic.h?rev=211023&r1=211022&r2=211023&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/Diagnostic.h (original)
+++ cfe/trunk/include/clang/Basic/Diagnostic.h Mon Jun 16 08:56:47 2014
@@ -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

Modified: cfe/trunk/include/clang/Basic/Diagnostic.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Diagnostic.td?rev=211023&r1=211022&r2=211023&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/Diagnostic.td (original)
+++ cfe/trunk/include/clang/Basic/Diagnostic.td Mon Jun 16 08:56:47 2014
@@ -69,7 +69,7 @@ class Diagnostic<string text, DiagClass
   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 DefaultSe
 class DefaultWarnNoWerror {
   bit WarningNoWerror = 1;
 }
-class DefaultWarnShowInSystemHeader {
-  bit WarningShowInSystemHeader = 1;
-}
 class DefaultRemark { Severity DefaultSeverity = SEV_Remark; }
 
 // Definitions for Diagnostics.

Modified: cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td?rev=211023&r1=211022&r2=211023&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticFrontendKinds.td Mon Jun 16 08:56:47 2014
@@ -7,7 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-class BackendInfo : CatBackend, DefaultWarnShowInSystemHeader;
+class BackendInfo : CatBackend, ShowInSystemHeader;
 
 let Component = "Frontend" in {
 

Modified: cfe/trunk/include/clang/Basic/DiagnosticIDs.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticIDs.h?rev=211023&r1=211022&r2=211023&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticIDs.h (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticIDs.h Mon Jun 16 08:56:47 2014
@@ -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.

Modified: cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td?rev=211023&r1=211022&r2=211023&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticLexKinds.td Mon Jun 16 08:56:47 2014
@@ -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 :
 
 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">;

Modified: cfe/trunk/lib/Basic/DiagnosticIDs.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/DiagnosticIDs.cpp?rev=211023&r1=211022&r2=211023&view=diff
==============================================================================
--- cfe/trunk/lib/Basic/DiagnosticIDs.cpp (original)
+++ cfe/trunk/lib/Basic/DiagnosticIDs.cpp Mon Jun 16 08:56:47 2014
@@ -394,7 +394,7 @@ DiagnosticIDs::getDiagnosticLevel(unsign
 
   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(unsign
 /// \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(uns
 
   // 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(uns
   // 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;

Modified: cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp?rev=211023&r1=211022&r2=211023&view=diff
==============================================================================
--- cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp (original)
+++ cfe/trunk/utils/TableGen/ClangDiagnosticsEmitter.cpp Mon Jun 16 08:56:47 2014
@@ -571,8 +571,7 @@ void EmitClangDiagsDefs(RecordKeeper &Re
     else
       OS << ", false";
 
-    // Default warning show in system header bit.
-    if (R.getValueAsBit("WarningShowInSystemHeader"))
+    if (R.getValueAsBit("ShowInSystemHeader"))
       OS << ", true";
     else
       OS << ", false";





More information about the cfe-commits mailing list