Message ID | a142e384-1d7c-5603-62de-ddcf753d9c2b@foss.arm.com |
---|---|
State | New |
Headers | show |
On 09/26/2016 03:55 AM, Thomas Preudhomme wrote: > How about this reworked patch? > > Best regards, > > Thomas > > On 23/09/16 17:17, Martin Sebor wrote: >> On 09/23/2016 09:42 AM, Thomas Preudhomme wrote: >>> 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. >> >> Thanks for the patch. The %p fixes look correct to me (someone >> else needs to approve the final patch). >> >> For the INT_MAX tests, I think it's a sign of a bug in the pass if >> for the following call >> >> sprintf (buf, "X%*c", INT_MAX, '1'); >> >> GCC prints >> >> warning: directive output of 0 byte causes result to exceed 'INT_MAX' >> >> My guess is that the bug is specific to a 32-bit compiler (I can't >> reproduce it in a 64-bit one with -m32). Let me build one and look >> into fixing it. >> >> Martin >> >>>> >>>> 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 >> > > accept_single_form_byte.patch > > > 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..efa69b8a8b29da4ed3253e19ba646168a6a1ca58 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 > @@ -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" } */ This is fine. jeff
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..efa69b8a8b29da4ed3253e19ba646168a6a1ca58 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 @@ -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