diff options
| author | Ted Kremenek <kremenek@apple.com> | 2011-08-27 00:16:45 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2011-08-27 00:16:45 +0000 |
| commit | 183875f67197e0a7654e1bf216085d2e883e7a3d (patch) | |
| tree | c6e8680600dceaa4059f820b7105192c2fb976cb | |
| parent | afeabec7e18646736cd9dfa1599aa7e4688111d0 (diff) | |
| download | bcm5719-llvm-183875f67197e0a7654e1bf216085d2e883e7a3d.tar.gz bcm5719-llvm-183875f67197e0a7654e1bf216085d2e883e7a3d.zip | |
Control 'invalid conversion specifier' warnings under a subflag (-Wformat-invalid-specifier) of -Wformat. Fixes <rdar://problem/10031930>.
llvm-svn: 138686
| -rw-r--r-- | clang/include/clang/Basic/DiagnosticGroups.td | 3 | ||||
| -rw-r--r-- | clang/include/clang/Basic/DiagnosticSemaKinds.td | 2 | ||||
| -rw-r--r-- | clang/test/Sema/format-strings.c | 10 |
3 files changed, 13 insertions, 2 deletions
diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td index add2ac365c3..a55254286b7 100644 --- a/clang/include/clang/Basic/DiagnosticGroups.td +++ b/clang/include/clang/Basic/DiagnosticGroups.td @@ -235,11 +235,12 @@ def Unused : DiagGroup<"unused", DiagCategory<"Unused Entity Issue">; // Format settings. +def FormatInvalidSpecifier : DiagGroup<"format-invalid-specifier">; def FormatSecurity : DiagGroup<"format-security">; def FormatY2K : DiagGroup<"format-y2k">; def Format : DiagGroup<"format", [FormatExtraArgs, FormatZeroLength, NonNull, - FormatSecurity, FormatY2K]>, + FormatSecurity, FormatY2K, FormatInvalidSpecifier]>, DiagCategory<"Format String Issue">; def FormatNonLiteral : DiagGroup<"format-nonliteral", [FormatSecurity]>; def Format2 : DiagGroup<"format=2", diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 2781675f00a..8b39c782f28 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -4232,7 +4232,7 @@ def warn_printf_insufficient_data_args : Warning< def warn_printf_data_arg_not_used : Warning< "data argument not used by format string">, InGroup<FormatExtraArgs>; def warn_format_invalid_conversion : Warning< - "invalid conversion specifier '%0'">, InGroup<Format>; + "invalid conversion specifier '%0'">, InGroup<FormatInvalidSpecifier>; def warn_printf_incomplete_specifier : Warning< "incomplete format specifier">, InGroup<Format>; def warn_missing_format_string : Warning< diff --git a/clang/test/Sema/format-strings.c b/clang/test/Sema/format-strings.c index b47d3ca2616..20c665b978b 100644 --- a/clang/test/Sema/format-strings.c +++ b/clang/test/Sema/format-strings.c @@ -372,3 +372,13 @@ void check_char(unsigned char x, signed char y) { printf("%c", x); // no-warning printf("%hhu", y); // no-warning } + +// Test suppression of individual warnings. + +void test_suppress_invalid_specifier() { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wformat-invalid-specifier" + printf("%@", 12); // no-warning +#pragma clang diagnostic pop +} + |

