diff mbox

Deal with singular sentences in builtin-sprintf-warn-1.c regex

Message ID a142e384-1d7c-5603-62de-ddcf753d9c2b@foss.arm.com
State New
Headers show

Commit Message

Thomas Preudhomme Sept. 26, 2016, 9:55 a.m. UTC
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
>

Comments

Jeff Law Sept. 26, 2016, 3:40 p.m. UTC | #1
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 mbox

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" } */
 
   /* GLIBC and uClibc treat the ' ' flag with the "%p" directive the same
      as with signed integer conversions (i.e., it prepends a space).  Other