Disable -Wformat-extra-args for arguments defined in system headers.

Some of the NSAssert macros in OS X 10.7 are implemented in a way that
adds extra arguments that trigger the -Wformat-extra-args warning.
Earlier versions of clang failed to detect those -Wformat issues, but now
that clang is reporting those problems, we need to quiet them since there's
nothing to be done to fix them.  <rdar://problem/11317765>

I don't know how to write a testcase for this.  Suggestions welcome.
Patch by Ted Kremenek!

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156092 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Bob Wilson 2012-05-03 19:47:19 +00:00
Родитель 3bb2994a7d
Коммит c03f2df2a2
1 изменённых файлов: 6 добавлений и 3 удалений

Просмотреть файл

@ -1975,9 +1975,12 @@ void CheckFormatHandler::DoneProcessing() {
signed notCoveredArg = CoveredArgs.find_first();
if (notCoveredArg >= 0) {
assert((unsigned)notCoveredArg < NumDataArgs);
EmitFormatDiagnostic(S.PDiag(diag::warn_printf_data_arg_not_used),
getDataArg((unsigned) notCoveredArg)->getLocStart(),
/*IsStringLocation*/false, getFormatStringRange());
SourceLocation Loc = getDataArg((unsigned) notCoveredArg)->getLocStart();
if (!S.getSourceManager().isInSystemMacro(Loc)) {
EmitFormatDiagnostic(S.PDiag(diag::warn_printf_data_arg_not_used),
Loc,
/*IsStringLocation*/false, getFormatStringRange());
}
}
}
}