summaryrefslogtreecommitdiff
path: root/gcc/c-format.c
diff options
context:
space:
mode:
authorthorpej <thorpej@138bc75d-0d04-0410-961f-82ee72b054a4>2002-05-18 19:02:03 +0000
committerthorpej <thorpej@138bc75d-0d04-0410-961f-82ee72b054a4>2002-05-18 19:02:03 +0000
commit959f435be90da086adecd9320cc25a9a2cd20a0b (patch)
treec6b8df55dea21cfdbf9d6f73c35e548d165992b2 /gcc/c-format.c
parent40570cc2420d0b37344c8a1835160d75eb2b5dcd (diff)
downloadgcc-959f435be90da086adecd9320cc25a9a2cd20a0b.tar.gz
* c-common.c (c_common_post_options): Warn if -Wformat-zero-length
is used without -Wformat. * c-common.h (warn_format_zero_length): Declare extern. * c-decl.c (warn_options): Add "format-zero-length". * c-format.c (warn_format_zero_length): Declare. (set_Wformat): Set warn_format_zero_length for -Wformat. (check_format_info): Only warn about zero-length formats if warn_format_zero_length is true. Include the format type name in the warning message. * doc/invoke.texi: Document -Wformat-zero-length. * testsuite/gcc.dg/format/zero-length-1.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@53592 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-format.c')
-rw-r--r--gcc/c-format.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/c-format.c b/gcc/c-format.c
index 470ccf7b3d6..dc73f4d69f1 100644
--- a/gcc/c-format.c
+++ b/gcc/c-format.c
@@ -44,6 +44,10 @@ int warn_format_y2k;
int warn_format_extra_args;
+/* Warn about zero-length formats. */
+
+int warn_format_zero_length;
+
/* Warn about non-literal format arguments. */
int warn_format_nonliteral;
@@ -61,6 +65,7 @@ set_Wformat (setting)
warn_format = setting;
warn_format_y2k = setting;
warn_format_extra_args = setting;
+ warn_format_zero_length = setting;
if (setting != 1)
{
warn_format_nonliteral = setting;
@@ -1361,8 +1366,9 @@ check_format_info (status, info, params)
&& res.number_other == 0 && warn_format_extra_args)
status_warning (status, "unused arguments in $-style format");
if (res.number_empty > 0 && res.number_non_literal == 0
- && res.number_other == 0)
- status_warning (status, "zero-length format string");
+ && res.number_other == 0 && warn_format_zero_length)
+ status_warning (status, "zero-length %s format string",
+ format_types[info->format_type].name);
if (res.number_wide > 0)
status_warning (status, "format is a wide character string");