This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, GCC] Deal with singular sentences in builtin-sprintf-warn-1.c regex
- From: Thomas Preudhomme <thomas dot preudhomme at foss dot arm dot com>
- To: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>, msebor at gmail dot com, Richard Biener <rguenther at suse dot de>, Jakub Jelinek <jakub at redhat dot com>
- Date: Fri, 23 Sep 2016 16:42:09 +0100
- Subject: Re: [PATCH, GCC] Deal with singular sentences in builtin-sprintf-warn-1.c regex
- Authentication-results: sourceware.org; auth=none
- References: <4aa6c210-b81a-9edb-f6bd-bad95fcb1f12@foss.arm.com>
Sorry, forgot the patch. Please find it attached.
Best regards,
Thomas
On 23/09/16 16:40, Thomas Preudhomme wrote:
Hi,
New builtin-sprintf-warn-1.c testcase contains a few regex of the form "\[0-9\]+
bytes" or ". bytes". This does not account for the case where the number of byte
is 0 in which case byte would be in the singular form. This caused a FAIL on
arm-none-eabi targets. This patch makes the s optional in all cases where the
number of bytes is unknown.
I did not commit this fix as obvious as people might want to only do the changes
for lines where the number of bytes *could* be 0 so I prefer to get review.
ChangeLog entry is as follows:
*** gcc/testsuite/ChangeLog ***
2016-09-23 Thomas Preud'homme <thomas.preudhomme@arm.com>
* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust regex to accept
singular form of byte when quantity is unknown.
Is this ok for trunk?
Best regards,
Thomas
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 e098be92bb0377414b1f9cacf5e4d2a3398e74ec..85dbcd9d6d3a5b1ad810037f03451207284a25b1 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
@@ -77,13 +77,13 @@ void test_sprintf_c_const (void)
T (-1, "%*c", INT_MAX - 1, '1');
T (-1, "%*c", INT_MAX, '1');
T (-1, "X%*c", INT_MAX - 1, '1');
- T (-1, "X%*c", INT_MAX, '1'); /* { dg-warning "directive output of \[0-9\]+ bytes causes result to exceed .INT_MAX." } */
+ T (-1, "X%*c", INT_MAX, '1'); /* { dg-warning "directive output of \[0-9\]+ bytes? causes result to exceed .INT_MAX." } */
- T (-1, "%*c%*c", INT_MAX - 1, '1', INT_MAX - 1, '2'); /* { dg-warning "directive output of \[0-9\]+ bytes causes result to exceed .INT_MAX." } */
+ T (-1, "%*c%*c", INT_MAX - 1, '1', INT_MAX - 1, '2'); /* { dg-warning "directive output of \[0-9\]+ bytes? causes result to exceed .INT_MAX." } */
T (-1, "%*cX", INT_MAX - 2, '1');
T (-1, "%*cX", INT_MAX - 1, '1');
- T (-1, "%*cX", INT_MAX, '1'); /* { dg-warning "output of \[0-9\]+ bytes causes result to exceed .INT_MAX." } */
+ T (-1, "%*cX", INT_MAX, '1'); /* { dg-warning "output of \[0-9\]+ bytes? causes result to exceed .INT_MAX." } */
}
/* Exercise the "%p" directive with constant arguments. */
@@ -98,9 +98,9 @@ void test_sprintf_p_const (void)
/* The exact output for %p is unspecified by C. Two formats are known:
same as %tx (for example AIX) and same as %#tx (for example Solaris). */
- T (0, "%p", (void*)0x1); /* { dg-warning ".%p. directive writing . bytes into a region of size 0" } */
- T (1, "%p", (void*)0x12); /* { dg-warning ".%p. directive writing . bytes into a region of size 1" } */
- T (2, "%p", (void*)0x123); /* { dg-warning ".%p. directive writing . bytes into a region of size 2" } */
+ T (0, "%p", (void*)0x1); /* { dg-warning ".%p. directive writing . bytes? into a region of size 0" } */
+ T (1, "%p", (void*)0x12); /* { dg-warning ".%p. directive writing . bytes? into a region of size 1" } */
+ T (2, "%p", (void*)0x123); /* { dg-warning ".%p. directive writing . bytes? into a region of size 2" } */
/* GLIBC and uClibc treat the ' ' flag with the "%p" directive the same
as with signed integer conversions (i.e., it prepends a space). Other
@@ -299,7 +299,7 @@ void test_sprintf_chk_s_const (void)
when the size of the destination object is unknown. */
T (-1, "%*s", INT_MAX - 1, "");
T (-1, "%*s", INT_MAX, "");
- T (-1, "X%*s", INT_MAX, ""); /* { dg-warning "directive output of \[0-9\]+ bytes causes result to exceed .INT_MAX." } */
+ T (-1, "X%*s", INT_MAX, ""); /* { dg-warning "directive output of \[0-9\]+ bytes? causes result to exceed .INT_MAX." } */
/* Multiple directives. */