Ping: https://gcc.gnu.org/ml/gcc-patches/2018-05/msg00509.html
On 05/10/2018 01:26 PM, Martin Sebor wrote:
GCC 8.1 warns for unbounded (and some bounded) string comparisons involving arrays declared attribute nonstring (i.e., char arrays that need not be nul-terminated). For instance: extern __attribute__((nonstring)) char a[4]; int f (void) { return strncmp (a, "123", sizeof a); } warning: ‘strcmp’ argument 1 declared attribute ‘nonstring’ Note that the warning refers to strcmp even though the call in the source is to strncmp, because prior passes transform one to the other. The warning above is unnecessary (for strcmp) and incorrect for strncmp because the call reads exactly four bytes from the non- string array a regardless of the bound and so there is no risk that it will read past the end of the array. The attached change enhances the warning to use the length of the string argument to suppress some of these needless warnings for both bounded and unbounded string comparison functions. When the length of the string is unknown, the warning uses its size (when possible) as the upper bound on the number of accessed bytes. The change adds no new warnings. I'm looking for approval to commit it to both trunk and 8-branch. Martin