forked from OSchip/llvm-project
fix PR6814 - Only print [-pedantic] on a diagnostic if -pedantic
actually turned it on. If a diag is produced by a warning which is an extension but defaults to on, and has no warning group, don't print any option info. llvm-svn: 101071
This commit is contained in:
parent
4ed2925b91
commit
97a8e43a02
|
@ -388,7 +388,18 @@ public:
|
|||
/// isBuiltinExtensionDiag - Determine whether the given built-in diagnostic
|
||||
/// ID is for an extension of some sort.
|
||||
///
|
||||
static bool isBuiltinExtensionDiag(unsigned DiagID);
|
||||
static bool isBuiltinExtensionDiag(unsigned DiagID) {
|
||||
bool ignored;
|
||||
return isBuiltinExtensionDiag(DiagID, ignored);
|
||||
}
|
||||
|
||||
/// isBuiltinExtensionDiag - Determine whether the given built-in diagnostic
|
||||
/// ID is for an extension of some sort. This also returns EnabledByDefault,
|
||||
/// which is set to indicate whether the diagnostic is ignored by default (in
|
||||
/// which case -pedantic enables it) or treated as a warning/error by default.
|
||||
///
|
||||
static bool isBuiltinExtensionDiag(unsigned DiagID, bool &EnabledByDefault);
|
||||
|
||||
|
||||
/// getWarningOptionForDiag - Return the lowest-level warning option that
|
||||
/// enables the specified diagnostic. If there is no -Wfoo flag that controls
|
||||
|
@ -478,7 +489,7 @@ private:
|
|||
/// getDiagnosticMappingInfo - Return the mapping info currently set for the
|
||||
/// specified builtin diagnostic. This returns the high bit encoding, or zero
|
||||
/// if the field is completely uninitialized.
|
||||
unsigned getDiagnosticMappingInfo(diag::kind Diag) const {
|
||||
diag::Mapping getDiagnosticMappingInfo(diag::kind Diag) const {
|
||||
const DiagMappings ¤tMappings = DiagMappingsStack.back();
|
||||
return (diag::Mapping)((currentMappings[Diag/2] >> (Diag & 1)*4) & 15);
|
||||
}
|
||||
|
|
|
@ -287,11 +287,18 @@ bool Diagnostic::isBuiltinNote(unsigned DiagID) {
|
|||
}
|
||||
|
||||
/// isBuiltinExtensionDiag - Determine whether the given built-in diagnostic
|
||||
/// ID is for an extension of some sort.
|
||||
/// ID is for an extension of some sort. This also returns EnabledByDefault,
|
||||
/// which is set to indicate whether the diagnostic is ignored by default (in
|
||||
/// which case -pedantic enables it) or treated as a warning/error by default.
|
||||
///
|
||||
bool Diagnostic::isBuiltinExtensionDiag(unsigned DiagID) {
|
||||
return DiagID < diag::DIAG_UPPER_LIMIT &&
|
||||
getBuiltinDiagClass(DiagID) == CLASS_EXTENSION;
|
||||
bool Diagnostic::isBuiltinExtensionDiag(unsigned DiagID,
|
||||
bool &EnabledByDefault) {
|
||||
if (DiagID >= diag::DIAG_UPPER_LIMIT ||
|
||||
getBuiltinDiagClass(DiagID) != CLASS_EXTENSION)
|
||||
return false;
|
||||
|
||||
EnabledByDefault = StaticDiagInfo[DiagID].Mapping != diag::MAP_IGNORE;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -796,8 +796,13 @@ void TextDiagnosticPrinter::HandleDiagnostic(Diagnostic::Level Level,
|
|||
OutStr += " [-W";
|
||||
OutStr += Opt;
|
||||
OutStr += ']';
|
||||
} else if (Diagnostic::isBuiltinExtensionDiag(Info.getID())) {
|
||||
OutStr += " [-pedantic]";
|
||||
} else {
|
||||
// If the diagnostic is an extension diagnostic and not enabled by default
|
||||
// then it must have been turned on with -pedantic.
|
||||
bool EnabledByDefault;
|
||||
if (Diagnostic::isBuiltinExtensionDiag(Info.getID(), EnabledByDefault) &&
|
||||
!EnabledByDefault)
|
||||
OutStr += " [-pedantic]";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue