summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Jasper <djasper@google.com>2015-03-04 14:18:20 +0000
committerDaniel Jasper <djasper@google.com>2015-03-04 14:18:20 +0000
commitad8d849f48c4301cb34fd54715135241531419da (patch)
treedb3dfee2be72cce331cb1d9fb013dbf2f1d0720e
parentb37b95ed3eff809ccb45fcdce1fca61978f21953 (diff)
downloadbcm5719-llvm-ad8d849f48c4301cb34fd54715135241531419da.tar.gz
bcm5719-llvm-ad8d849f48c4301cb34fd54715135241531419da.zip
Move one more diagnostic into the new -Wformat-pedantic group.
This was apparently overlooked in r231211. llvm-svn: 231242
-rw-r--r--clang/lib/Sema/SemaChecking.cpp18
-rw-r--r--clang/test/SemaCXX/format-strings-0x-nopedantic.cpp10
2 files changed, 20 insertions, 8 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
index 6b569b63756..884bd7ddbba 100644
--- a/clang/lib/Sema/SemaChecking.cpp
+++ b/clang/lib/Sema/SemaChecking.cpp
@@ -3768,16 +3768,18 @@ CheckPrintfHandler::checkFormatExpr(const analyze_printf::PrintfSpecifier &FS,
CharSourceRange SpecRange = getSpecifierRange(StartSpecifier, SpecifierLen);
if (IntendedTy == ExprTy && !ShouldNotPrintDirectly) {
+ unsigned diag = diag::warn_format_conversion_argument_type_mismatch;
+ if (match == analyze_format_string::ArgType::NoMatchPedantic) {
+ diag = diag::warn_format_conversion_argument_type_mismatch_pedantic;
+ }
// In this case, the specifier is wrong and should be changed to match
// the argument.
- EmitFormatDiagnostic(
- S.PDiag(diag::warn_format_conversion_argument_type_mismatch)
- << AT.getRepresentativeTypeName(S.Context) << IntendedTy << IsEnum
- << E->getSourceRange(),
- E->getLocStart(),
- /*IsStringLocation*/false,
- SpecRange,
- FixItHint::CreateReplacement(SpecRange, os.str()));
+ EmitFormatDiagnostic(S.PDiag(diag)
+ << AT.getRepresentativeTypeName(S.Context)
+ << IntendedTy << IsEnum << E->getSourceRange(),
+ E->getLocStart(),
+ /*IsStringLocation*/ false, SpecRange,
+ FixItHint::CreateReplacement(SpecRange, os.str()));
} else {
// The canonical type for formatting this value is different from the
diff --git a/clang/test/SemaCXX/format-strings-0x-nopedantic.cpp b/clang/test/SemaCXX/format-strings-0x-nopedantic.cpp
new file mode 100644
index 00000000000..62e7adef44b
--- /dev/null
+++ b/clang/test/SemaCXX/format-strings-0x-nopedantic.cpp
@@ -0,0 +1,10 @@
+// RUN: %clang_cc1 -fsyntax-only -verify -Wformat -std=c++11 %s
+// expected-no-diagnostics
+extern "C" {
+extern int scanf(const char *restrict, ...);
+extern int printf(const char *restrict, ...);
+}
+
+void f(char *c) {
+ printf("%p", c);
+}
OpenPOWER on IntegriCloud