Skip to content

Commit 1e86d63

Browse files
committed
[clang] Selectively ena/disa-ble format-insufficient-args warning
Differential Revision: https://reviews.llvm.org/D87176
1 parent e72d792 commit 1e86d63

File tree

4 files changed

+16
-2
lines changed

4 files changed

+16
-2
lines changed

clang/include/clang/Basic/DiagnosticGroups.td

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ def ExtraSemi : DiagGroup<"extra-semi", [CXX98CompatExtraSemi,
239239
def GNUFlexibleArrayInitializer : DiagGroup<"gnu-flexible-array-initializer">;
240240
def GNUFlexibleArrayUnionMember : DiagGroup<"gnu-flexible-array-union-member">;
241241
def GNUFoldingConstant : DiagGroup<"gnu-folding-constant">;
242+
def FormatInsufficientArgs : DiagGroup<"format-insufficient-args">;
242243
def FormatExtraArgs : DiagGroup<"format-extra-args">;
243244
def FormatZeroLength : DiagGroup<"format-zero-length">;
244245

@@ -849,7 +850,8 @@ def FormatPedantic : DiagGroup<"format-pedantic">;
849850
def FormatTypeConfusion : DiagGroup<"format-type-confusion">;
850851
def Format : DiagGroup<"format",
851852
[FormatExtraArgs, FormatZeroLength, NonNull,
852-
FormatSecurity, FormatY2K, FormatInvalidSpecifier]>,
853+
FormatSecurity, FormatY2K, FormatInvalidSpecifier,
854+
FormatInsufficientArgs]>,
853855
DiagCategory<"Format String Issue">;
854856
def FormatNonLiteral : DiagGroup<"format-nonliteral">;
855857
def Format2 : DiagGroup<"format=2",

clang/include/clang/Basic/DiagnosticSemaKinds.td

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8921,7 +8921,7 @@ def note_array_declared_here : Note<
89218921
"array %0 declared here">;
89228922

89238923
def warn_printf_insufficient_data_args : Warning<
8924-
"more '%%' conversions than data arguments">, InGroup<Format>;
8924+
"more '%%' conversions than data arguments">, InGroup<FormatInsufficientArgs>;
89258925
def warn_printf_data_arg_not_used : Warning<
89268926
"data argument not used by format string">, InGroup<FormatExtraArgs>;
89278927
def warn_format_invalid_conversion : Warning<

clang/test/Misc/warning-wall.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ CHECK-NEXT: -Wdelete-non-virtual-dtor
99
CHECK-NEXT: -Wdelete-non-abstract-non-virtual-dtor
1010
CHECK-NEXT: -Wdelete-abstract-non-virtual-dtor
1111
CHECK-NEXT: -Wformat
12+
CHECK-NEXT: -Wformat-insufficient-args
1213
CHECK-NEXT: -Wformat-extra-args
1314
CHECK-NEXT: -Wformat-zero-length
1415
CHECK-NEXT: -Wnonnull
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// RUN: %clang_cc1 -fsyntax-only -verify=WARNING-ON %s
2+
// RUN: %clang_cc1 -fsyntax-only -Wno-format-insufficient-args -verify=WARNING-OFF %s
3+
4+
5+
int printf(const char * format, ...);
6+
7+
int main(void) {
8+
int patatino = 42;
9+
printf("%i %i", patatino); // WARNING-ON-warning {{more '%' conversions than data arguments}}
10+
// WARNING-OFF-no-diagnostics
11+
}

0 commit comments

Comments
 (0)