diff options
Diffstat (limited to 'lib/Basic')
-rw-r--r-- | lib/Basic/DiagnosticIDs.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/Basic/DiagnosticIDs.cpp b/lib/Basic/DiagnosticIDs.cpp index 9d460a5c9a..9481287c08 100644 --- a/lib/Basic/DiagnosticIDs.cpp +++ b/lib/Basic/DiagnosticIDs.cpp @@ -550,9 +550,12 @@ DiagnosticIDs::getDiagnosticLevel(unsigned DiagID, unsigned DiagClass, !MappingInfo.isUser()) Result = DiagnosticIDs::Warning; - // Ignore any kind of extension diagnostics inside __extension__ blocks. - bool IsExtensionDiag = isBuiltinExtensionDiag(DiagID); - if (Diag.AllExtensionsSilenced && IsExtensionDiag) + // Ignore -pedantic diagnostics inside __extension__ blocks. + // (The diagnostics controlled by -pedantic are the extension diagnostics + // that are not enabled by default.) + bool EnabledByDefault; + bool IsExtensionDiag = isBuiltinExtensionDiag(DiagID, EnabledByDefault); + if (Diag.AllExtensionsSilenced && IsExtensionDiag && !EnabledByDefault) return DiagnosticIDs::Ignored; // For extension diagnostics that haven't been explicitly mapped, check if we |