[Darwin, testsuite, committed] Fix Wnonnull on Darwin.

Martin Sebor msebor@gmail.com
Sat Oct 19 16:17:00 GMT 2019


On 10/19/19 2:56 AM, Iain Sandoe wrote:
> Andreas Schwab <schwab@linux-m68k.org> wrote:
> 
>> On Okt 19 2019, Iain Sandoe <iain@sandoe.co.uk> wrote:
>>
>>> This test has failed always on Darwin, because Darwin does not mark
>>> entries in string.h with nonnull attributes.  Since the purpose of the test
>>> is to check that the warnings are issued for an inlined function, not that
>>> the target headers are marked up, we can provide locally marked up
>>> function declarations for Darwin.
>>
>> If the test depends on the non-std declarations, then it should use them
>> everywhere.
> 
> from my perspective, agreed, Martin?

I don't see a problem with it.  I prefer tests that don't depend
on system headers to avoid these kinds of issues.

That said, it shouldn't matter if the declaration of a built-in
function has the nonnull attribute.  As long as the built-in has
one and isn't disabled GCC should use it.  I'd be curious to know
what is actually preventing the warning from triggering there.

Martin

> 
>>> diff --git a/gcc/testsuite/gcc.dg/Wnonnull.c b/gcc/testsuite/gcc.dg/Wnonnull.c
>>> index be89a5a755..a165baa99f 100644
>>> --- a/gcc/testsuite/gcc.dg/Wnonnull.c
>>> +++ b/gcc/testsuite/gcc.dg/Wnonnull.c
>>> @@ -2,7 +2,16 @@
>>>     { dg-do compile }
>>>     { dg-options "-O2 -Wall" } */
>>>
>>> +#ifndef __APPLE__
>>> #include <string.h>
>>> +#else
>>> +/* OSX headers do not mark up the nonnull elements yet.  */
>>> +# include <stddef.h>
>>> +extern size_t strlen (const char *__s)
>>> +		      __attribute ((pure)) __attribute ((nonnull (1)));
>>> +extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
>>> +		     size_t __n) __attribute ((nonnull (1, 2)));
>>> +#endif
>>
>> Perhaps use __SIZE_TYPE__ instead of #include <stddef.h>?
> 
> if we make the definitions generic, then this would avoid any header includes.
> 
> Iain
> 



More information about the Gcc-patches mailing list