On 10/19/19 2:56 AM, Iain Sandoe wrote:
Andreas Schwab <sch...@linux-m68k.org> wrote:

On Okt 19 2019, Iain Sandoe <i...@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


Reply via email to