[libc++] Fix -Wgnu-include-next in stddef.h (#88214)
authorLouis Dionne <ldionne.2@gmail.com>
Thu, 11 Apr 2024 16:36:56 +0000 (12:36 -0400)
committerTom Stellard <tstellar@redhat.com>
Tue, 16 Apr 2024 21:36:31 +0000 (14:36 -0700)
As reported in #86843, we must have #pragma GCC system_header before we
use #include_next, otherwise the compiler may not understand that we're
in a system header and may issue a diagnostic for our usage of

(cherry picked from commit 3c4b673af05f53e8a4d1a382b5c86367ea512c9e)

libcxx/include/stddef.h

index 470b5408336c6d8999abbd87dfa7cd962d84d315..1583e78e3739ba460197926b7d0c4e510dc95503 100644 (file)
@@ -26,6 +26,10 @@ Types:
 
 #include <__config>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
+#  pragma GCC system_header
+#endif
+
 // Note: This include is outside of header guards because we sometimes get included multiple times
 //       with different defines and the underlying <stddef.h> will know how to deal with that.
 #include_next <stddef.h>
@@ -33,10 +37,6 @@ Types:
 #ifndef _LIBCPP_STDDEF_H
 #  define _LIBCPP_STDDEF_H
 
-#  if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
-#    pragma GCC system_header
-#  endif
-
 #  ifdef __cplusplus
 typedef decltype(nullptr) nullptr_t;
 #  endif