On 05/29/2018 08:57 PM, Martin Sebor wrote:
> Warning for a strncpy call whose bound is the same as the size
> of the source and suggesting to use the size of the source is
> less than helpful when both sizes are the same, as in:
> 
>   char a[4], b[4];
>   strncpy (a, b, sizeof b);
> 
> The attached patch suppresses the -Wsizeof-pointer-memaccess
> warning for these cases.  To do that even for VLAs (in some
> cases), the patch enhances operand_equal_p() to handle
> SAVE_EXPR to detect when VLA in sizeof VLA refers to the size
> of a variable-length array.
> 
> Is this okay for trunk and GCC 8?
> 
> Martin
> 
> gcc-85931.diff
> 
> 
> PR c/85931 -  -Wsizeof-pointer-memaccess for strncpy with size of source
> 
> gcc/c-family/ChangeLog:
> 
>       PR c/85931
>       * c-warn.c (sizeof_pointer_memaccess_warning): Avoid warning when
>       sizeof source and destination yields the same value.
> 
> gcc/ChangeLog:
> 
>       PR c/85931
>       * fold-const.c (operand_equal_p): Handle SAVE_EXPR.
> 
> gcc/testsuite/ChangeLog:
> 
>       PR c/85931
>       * gcc.dg/Wstringop-truncation-3.c: New test.
OK for the trunk.  Richi and Jakub have the final say for the branch.

I'm a bit surprised that you don't just use operand_equal_p for both the
INTEGER_CST and !INTEGER_CST cases when testing dstsz == srcsz

Jeff

Reply via email to