From: Martin Sebor Date: Sat, 28 Jan 2017 00:09:15 +0000 (+0000) Subject: builtin-sprintf-warn-1.c: Add test cases. X-Git-Tag: basepoints/gcc-8~1313 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=eb339366496c247f8d9667c58922eac8a870222b;p=thirdparty%2Fgcc.git builtin-sprintf-warn-1.c: Add test cases. gcc/testsuite/ChangeLog: * gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Add test cases. From-SVN: r244999 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index eb63091bbdaf..f4b6aa09a6e0 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2017-01-27 Martin Sebor + + * gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Add test cases. + 2017-01-27 Bernd Schmidt PR rtl-optimization/79194 diff --git a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c index 0f3d423d46e5..9955326ed4c6 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c @@ -76,10 +76,24 @@ int dummy___vsnprintf_chk (char*, size_t, int, size_t, const char*, va_list); /* Macro to verify that calls to __builtin_sprintf (i.e., with no size argument) issue diagnostics by correctly determining the size of the destination buffer. */ -#define T(size, fmt, ...) \ - (FUNC (sprintf) (buffer (size), fmt, __VA_ARGS__), \ +#define T(size, ...) \ + (FUNC (sprintf) (buffer (size), __VA_ARGS__), \ sink (buffer, ptr)) +/* Exercise the "%%" directive. */ + +void test_sprintf_percent (void) +{ + T (-1, "%%"); + T ( 0, "%%"); /* { dg-warning ".%%. directive writing 1 byte into a region of size 0" } */ + T ( 1, "%%"); /* { dg-warning "writing a terminating nul past the end" } */ + T ( 2, "%%"); + T ( 2, "%%%%"); /* { dg-warning "writing a terminating nul past the end" } */ + T ( 3, "%%%%"); + T ( 3, "%%X%%"); /* { dg-warning "writing a terminating nul past the end" } */ + T ( 4, "%%X%%"); +} + /* Exercise the "%c" and "%lc" directive with constant arguments. */ void test_sprintf_c_const (void)