aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/include/experimental
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2024-09-12 12:15:51 -0400
committerJason Merrill <jason@redhat.com>2024-09-25 08:20:45 -0400
commit63a598deb0c9fcb8704af6ef90f0b905942b0276 (patch)
tree9e3b7ae67e2e7d3f273115aa7bff981ff4e5fddc /libstdc++-v3/include/experimental
parent2407dbe1d887068a13c6ee9b6922560f1c89def5 (diff)
downloadgcc-63a598deb0c9fcb8704af6ef90f0b905942b0276.zip
gcc-63a598deb0c9fcb8704af6ef90f0b905942b0276.tar.gz
gcc-63a598deb0c9fcb8704af6ef90f0b905942b0276.tar.bz2
libstdc++: #ifdef out #pragma GCC system_header
In r15-3714-gd3a7302ec5985a I added -Wsystem-headers to the libstdc++ build flags to help catch problems in the library. This patch takes a different approach, of disabling the #pragma system_header unless _GLIBCXX_SYSHDR is defined. As a result, the testsuites will treat them as non-system-headers to get better warning coverage during regression testing of both gcc and libstdc++, not just when building the library. My rationale for the #ifdef instead of just removing the #pragma is the three G++ tests that want to test libstdc++ system header behavior, so we need a way to select it. This doesn't affect installed libraries, as they get their system-header status from the lookup path. But testsuite_flags --build-includes gives -I directives rather than -isystem. This patch doesn't change the headers in config/ because I'm not compiling with most of them, so won't see any warnings that need fixing. Adjusting them could happen later, or we can not bother. libstdc++-v3/ChangeLog: * acinclude.m4 (WARN_FLAGS): Remove -Wsystem-headers. * configure: Regenerate. * include/bits/algorithmfwd.h: #ifdef out #pragma GCC system_header. * include/bits/atomic_base.h * include/bits/atomic_futex.h * include/bits/atomic_timed_wait.h * include/bits/atomic_wait.h * include/bits/basic_ios.h * include/bits/basic_string.h * include/bits/boost_concept_check.h * include/bits/char_traits.h * include/bits/charconv.h * include/bits/chrono.h * include/bits/chrono_io.h * include/bits/codecvt.h * include/bits/concept_check.h * include/bits/cpp_type_traits.h * include/bits/elements_of.h * include/bits/enable_special_members.h * include/bits/erase_if.h * include/bits/forward_list.h * include/bits/functional_hash.h * include/bits/gslice.h * include/bits/gslice_array.h * include/bits/hashtable.h * include/bits/indirect_array.h * include/bits/invoke.h * include/bits/ios_base.h * include/bits/iterator_concepts.h * include/bits/locale_classes.h * include/bits/locale_facets.h * include/bits/locale_facets_nonio.h * include/bits/localefwd.h * include/bits/mask_array.h * include/bits/max_size_type.h * include/bits/memory_resource.h * include/bits/memoryfwd.h * include/bits/move_only_function.h * include/bits/node_handle.h * include/bits/ostream_insert.h * include/bits/out_ptr.h * include/bits/parse_numbers.h * include/bits/postypes.h * include/bits/quoted_string.h * include/bits/range_access.h * include/bits/ranges_base.h * include/bits/refwrap.h * include/bits/sat_arith.h * include/bits/semaphore_base.h * include/bits/slice_array.h * include/bits/std_abs.h * include/bits/std_function.h * include/bits/std_mutex.h * include/bits/std_thread.h * include/bits/stl_iterator_base_funcs.h * include/bits/stl_iterator_base_types.h * include/bits/stl_tree.h * include/bits/stream_iterator.h * include/bits/streambuf_iterator.h * include/bits/stringfwd.h * include/bits/this_thread_sleep.h * include/bits/unique_lock.h * include/bits/uses_allocator_args.h * include/bits/utility.h * include/bits/valarray_after.h * include/bits/valarray_array.h * include/bits/valarray_before.h * include/bits/version.h * include/c_compatibility/fenv.h * include/c_compatibility/inttypes.h * include/c_compatibility/stdint.h * include/decimal/decimal.h * include/experimental/bits/net.h * include/experimental/bits/shared_ptr.h * include/ext/aligned_buffer.h * include/ext/alloc_traits.h * include/ext/atomicity.h * include/ext/concurrence.h * include/ext/numeric_traits.h * include/ext/pod_char_traits.h * include/ext/pointer.h * include/ext/stdio_filebuf.h * include/ext/stdio_sync_filebuf.h * include/ext/string_conversions.h * include/ext/type_traits.h * include/ext/vstring.h * include/ext/vstring_fwd.h * include/ext/vstring_util.h * include/parallel/algorithmfwd.h * include/parallel/numericfwd.h * include/tr1/functional_hash.h * include/tr1/hashtable.h * include/tr1/random.h * libsupc++/exception.h * libsupc++/hash_bytes.h * include/bits/basic_ios.tcc * include/bits/basic_string.tcc * include/bits/fstream.tcc * include/bits/istream.tcc * include/bits/locale_classes.tcc * include/bits/locale_facets.tcc * include/bits/locale_facets_nonio.tcc * include/bits/ostream.tcc * include/bits/sstream.tcc * include/bits/streambuf.tcc * include/bits/string_view.tcc * include/bits/version.tpl * include/experimental/bits/string_view.tcc * include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp * include/ext/random.tcc * include/ext/vstring.tcc * include/tr2/bool_set.tcc * include/tr2/dynamic_bitset.tcc * include/bits/c++config * include/c/cassert * include/c/cctype * include/c/cerrno * include/c/cfloat * include/c/ciso646 * include/c/climits * include/c/clocale * include/c/cmath * include/c/csetjmp * include/c/csignal * include/c/cstdarg * include/c/cstddef * include/c/cstdio * include/c/cstdlib * include/c/cstring * include/c/ctime * include/c/cuchar * include/c/cwchar * include/c/cwctype * include/c_global/cassert * include/c_global/ccomplex * include/c_global/cctype * include/c_global/cerrno * include/c_global/cfenv * include/c_global/cfloat * include/c_global/cinttypes * include/c_global/ciso646 * include/c_global/climits * include/c_global/clocale * include/c_global/cmath * include/c_global/csetjmp * include/c_global/csignal * include/c_global/cstdalign * include/c_global/cstdarg * include/c_global/cstdbool * include/c_global/cstddef * include/c_global/cstdint * include/c_global/cstdio * include/c_global/cstdlib * include/c_global/cstring * include/c_global/ctgmath * include/c_global/ctime * include/c_global/cuchar * include/c_global/cwchar * include/c_global/cwctype * include/c_std/cassert * include/c_std/cctype * include/c_std/cerrno * include/c_std/cfloat * include/c_std/ciso646 * include/c_std/climits * include/c_std/clocale * include/c_std/cmath * include/c_std/csetjmp * include/c_std/csignal * include/c_std/cstdarg * include/c_std/cstddef * include/c_std/cstdio * include/c_std/cstdlib * include/c_std/cstring * include/c_std/ctime * include/c_std/cuchar * include/c_std/cwchar * include/c_std/cwctype * include/debug/array * include/debug/bitset * include/debug/deque * include/debug/forward_list * include/debug/list * include/debug/map * include/debug/set * include/debug/string * include/debug/unordered_map * include/debug/unordered_set * include/debug/vector * include/decimal/decimal * include/experimental/algorithm * include/experimental/any * include/experimental/array * include/experimental/buffer * include/experimental/chrono * include/experimental/contract * include/experimental/deque * include/experimental/executor * include/experimental/filesystem * include/experimental/forward_list * include/experimental/functional * include/experimental/internet * include/experimental/io_context * include/experimental/iterator * include/experimental/list * include/experimental/map * include/experimental/memory * include/experimental/memory_resource * include/experimental/net * include/experimental/netfwd * include/experimental/numeric * include/experimental/propagate_const * include/experimental/ratio * include/experimental/regex * include/experimental/scope * include/experimental/set * include/experimental/socket * include/experimental/string * include/experimental/string_view * include/experimental/synchronized_value * include/experimental/system_error * include/experimental/timer * include/experimental/tuple * include/experimental/type_traits * include/experimental/unordered_map * include/experimental/unordered_set * include/experimental/vector * include/ext/algorithm * include/ext/cmath * include/ext/functional * include/ext/iterator * include/ext/memory * include/ext/numeric * include/ext/random * include/ext/rb_tree * include/ext/rope * include/parallel/algorithm * include/std/algorithm * include/std/any * include/std/array * include/std/atomic * include/std/barrier * include/std/bit * include/std/bitset * include/std/charconv * include/std/chrono * include/std/codecvt * include/std/complex * include/std/concepts * include/std/condition_variable * include/std/coroutine * include/std/deque * include/std/execution * include/std/expected * include/std/filesystem * include/std/format * include/std/forward_list * include/std/fstream * include/std/functional * include/std/future * include/std/generator * include/std/iomanip * include/std/ios * include/std/iosfwd * include/std/iostream * include/std/istream * include/std/iterator * include/std/latch * include/std/limits * include/std/list * include/std/locale * include/std/map * include/std/memory * include/std/memory_resource * include/std/mutex * include/std/numbers * include/std/numeric * include/std/optional * include/std/ostream * include/std/print * include/std/queue * include/std/random * include/std/ranges * include/std/ratio * include/std/regex * include/std/scoped_allocator * include/std/semaphore * include/std/set * include/std/shared_mutex * include/std/span * include/std/spanstream * include/std/sstream * include/std/stack * include/std/stacktrace * include/std/stdexcept * include/std/streambuf * include/std/string * include/std/string_view * include/std/syncstream * include/std/system_error * include/std/text_encoding * include/std/thread * include/std/tuple * include/std/type_traits * include/std/typeindex * include/std/unordered_map * include/std/unordered_set * include/std/utility * include/std/valarray * include/std/variant * include/std/vector * include/std/version * include/tr1/array * include/tr1/cfenv * include/tr1/cinttypes * include/tr1/cmath * include/tr1/complex * include/tr1/cstdbool * include/tr1/cstdint * include/tr1/cstdio * include/tr1/cstdlib * include/tr1/cwchar * include/tr1/cwctype * include/tr1/functional * include/tr1/memory * include/tr1/random * include/tr1/regex * include/tr1/tuple * include/tr1/type_traits * include/tr1/unordered_map * include/tr1/unordered_set * include/tr1/utility * include/tr2/bool_set * include/tr2/dynamic_bitset * include/tr2/type_traits * libsupc++/atomic_lockfree_defines.h * libsupc++/compare * libsupc++/cxxabi.h * libsupc++/cxxabi_forced.h * libsupc++/cxxabi_init_exception.h * libsupc++/exception * libsupc++/initializer_list * libsupc++/new * libsupc++/typeinfo: Likewise. * testsuite/20_util/ratio/operations/ops_overflow_neg.cc * testsuite/23_containers/array/tuple_interface/get_neg.cc * testsuite/23_containers/vector/cons/destructible_debug_neg.cc * testsuite/24_iterators/operations/prev_neg.cc * testsuite/ext/type_traits/add_unsigned_floating_neg.cc * testsuite/ext/type_traits/add_unsigned_integer_neg.cc * testsuite/ext/type_traits/remove_unsigned_floating_neg.cc * testsuite/ext/type_traits/remove_unsigned_integer_neg.cc: Adjust line numbers. gcc/testsuite/ChangeLog * g++.dg/analyzer/fanalyzer-show-events-in-system-headers-default.C * g++.dg/analyzer/fanalyzer-show-events-in-system-headers-no.C * g++.dg/diagnostic/disable.C: #define _GLIBCXX_SYSHDR.
Diffstat (limited to 'libstdc++-v3/include/experimental')
-rw-r--r--libstdc++-v3/include/experimental/algorithm2
-rw-r--r--libstdc++-v3/include/experimental/any2
-rw-r--r--libstdc++-v3/include/experimental/array2
-rw-r--r--libstdc++-v3/include/experimental/bits/net.h2
-rw-r--r--libstdc++-v3/include/experimental/bits/shared_ptr.h2
-rw-r--r--libstdc++-v3/include/experimental/bits/string_view.tcc2
-rw-r--r--libstdc++-v3/include/experimental/buffer2
-rw-r--r--libstdc++-v3/include/experimental/chrono2
-rw-r--r--libstdc++-v3/include/experimental/contract2
-rw-r--r--libstdc++-v3/include/experimental/deque2
-rw-r--r--libstdc++-v3/include/experimental/executor2
-rw-r--r--libstdc++-v3/include/experimental/filesystem2
-rw-r--r--libstdc++-v3/include/experimental/forward_list2
-rw-r--r--libstdc++-v3/include/experimental/functional2
-rw-r--r--libstdc++-v3/include/experimental/internet2
-rw-r--r--libstdc++-v3/include/experimental/io_context2
-rw-r--r--libstdc++-v3/include/experimental/iterator2
-rw-r--r--libstdc++-v3/include/experimental/list2
-rw-r--r--libstdc++-v3/include/experimental/map2
-rw-r--r--libstdc++-v3/include/experimental/memory2
-rw-r--r--libstdc++-v3/include/experimental/memory_resource2
-rw-r--r--libstdc++-v3/include/experimental/net2
-rw-r--r--libstdc++-v3/include/experimental/netfwd2
-rw-r--r--libstdc++-v3/include/experimental/numeric2
-rw-r--r--libstdc++-v3/include/experimental/propagate_const2
-rw-r--r--libstdc++-v3/include/experimental/ratio2
-rw-r--r--libstdc++-v3/include/experimental/regex2
-rw-r--r--libstdc++-v3/include/experimental/scope2
-rw-r--r--libstdc++-v3/include/experimental/set2
-rw-r--r--libstdc++-v3/include/experimental/socket2
-rw-r--r--libstdc++-v3/include/experimental/string2
-rw-r--r--libstdc++-v3/include/experimental/string_view2
-rw-r--r--libstdc++-v3/include/experimental/synchronized_value2
-rw-r--r--libstdc++-v3/include/experimental/system_error2
-rw-r--r--libstdc++-v3/include/experimental/timer2
-rw-r--r--libstdc++-v3/include/experimental/tuple2
-rw-r--r--libstdc++-v3/include/experimental/type_traits2
-rw-r--r--libstdc++-v3/include/experimental/unordered_map2
-rw-r--r--libstdc++-v3/include/experimental/unordered_set2
-rw-r--r--libstdc++-v3/include/experimental/vector2
40 files changed, 80 insertions, 0 deletions
diff --git a/libstdc++-v3/include/experimental/algorithm b/libstdc++-v3/include/experimental/algorithm
index 1953dab..49403c9 100644
--- a/libstdc++-v3/include/experimental/algorithm
+++ b/libstdc++-v3/include/experimental/algorithm
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_ALGORITHM
#define _GLIBCXX_EXPERIMENTAL_ALGORITHM 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/any b/libstdc++-v3/include/experimental/any
index 3db30df..79b6268 100644
--- a/libstdc++-v3/include/experimental/any
+++ b/libstdc++-v3/include/experimental/any
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_ANY
#define _GLIBCXX_EXPERIMENTAL_ANY 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/array b/libstdc++-v3/include/experimental/array
index bb46e0f..14a2e6e 100644
--- a/libstdc++-v3/include/experimental/array
+++ b/libstdc++-v3/include/experimental/array
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_ARRAY
#define _GLIBCXX_EXPERIMENTAL_ARRAY 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/bits/net.h b/libstdc++-v3/include/experimental/bits/net.h
index 9697069..d536d86 100644
--- a/libstdc++-v3/include/experimental/bits/net.h
+++ b/libstdc++-v3/include/experimental/bits/net.h
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_NET_H
#define _GLIBCXX_EXPERIMENTAL_NET_H 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#if __cplusplus >= 201402L
diff --git a/libstdc++-v3/include/experimental/bits/shared_ptr.h b/libstdc++-v3/include/experimental/bits/shared_ptr.h
index f30d9a7..9a5659c 100644
--- a/libstdc++-v3/include/experimental/bits/shared_ptr.h
+++ b/libstdc++-v3/include/experimental/bits/shared_ptr.h
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_SHARED_PTR_H
#define _GLIBCXX_EXPERIMENTAL_SHARED_PTR_H 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#if __cplusplus >= 201402L
diff --git a/libstdc++-v3/include/experimental/bits/string_view.tcc b/libstdc++-v3/include/experimental/bits/string_view.tcc
index 80de34d..c0e1ab5 100644
--- a/libstdc++-v3/include/experimental/bits/string_view.tcc
+++ b/libstdc++-v3/include/experimental/bits/string_view.tcc
@@ -34,7 +34,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_STRING_VIEW_TCC
#define _GLIBCXX_EXPERIMENTAL_STRING_VIEW_TCC 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#if __cplusplus >= 201402L
diff --git a/libstdc++-v3/include/experimental/buffer b/libstdc++-v3/include/experimental/buffer
index 054150e..87137dc 100644
--- a/libstdc++-v3/include/experimental/buffer
+++ b/libstdc++-v3/include/experimental/buffer
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_BUFFER
#define _GLIBCXX_EXPERIMENTAL_BUFFER 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/chrono b/libstdc++-v3/include/experimental/chrono
index c5395ca..61ca839 100644
--- a/libstdc++-v3/include/experimental/chrono
+++ b/libstdc++-v3/include/experimental/chrono
@@ -34,7 +34,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_CHRONO
#define _GLIBCXX_EXPERIMENTAL_CHRONO 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/contract b/libstdc++-v3/include/experimental/contract
index 84f4433..98d42ba 100644
--- a/libstdc++-v3/include/experimental/contract
+++ b/libstdc++-v3/include/experimental/contract
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_CONTRACT
#define _GLIBCXX_CONTRACT 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#if __cplusplus >= 201703L
diff --git a/libstdc++-v3/include/experimental/deque b/libstdc++-v3/include/experimental/deque
index de5d46c..3ee39de 100644
--- a/libstdc++-v3/include/experimental/deque
+++ b/libstdc++-v3/include/experimental/deque
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_DEQUE
#define _GLIBCXX_EXPERIMENTAL_DEQUE 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/executor b/libstdc++-v3/include/experimental/executor
index f64783b..cce5347 100644
--- a/libstdc++-v3/include/experimental/executor
+++ b/libstdc++-v3/include/experimental/executor
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_EXECUTOR
#define _GLIBCXX_EXPERIMENTAL_EXECUTOR 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/filesystem b/libstdc++-v3/include/experimental/filesystem
index 82df075..182b148 100644
--- a/libstdc++-v3/include/experimental/filesystem
+++ b/libstdc++-v3/include/experimental/filesystem
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_FILESYSTEM
#define _GLIBCXX_EXPERIMENTAL_FILESYSTEM 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/forward_list b/libstdc++-v3/include/experimental/forward_list
index 35d50f4..e1e3b03 100644
--- a/libstdc++-v3/include/experimental/forward_list
+++ b/libstdc++-v3/include/experimental/forward_list
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_FORWARD_LIST
#define _GLIBCXX_EXPERIMENTAL_FORWARD_LIST 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/functional b/libstdc++-v3/include/experimental/functional
index b145173..cf420af 100644
--- a/libstdc++-v3/include/experimental/functional
+++ b/libstdc++-v3/include/experimental/functional
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_FUNCTIONAL
#define _GLIBCXX_EXPERIMENTAL_FUNCTIONAL 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/internet b/libstdc++-v3/include/experimental/internet
index 3f5090c..d6b1319a 100644
--- a/libstdc++-v3/include/experimental/internet
+++ b/libstdc++-v3/include/experimental/internet
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_INTERNET
#define _GLIBCXX_EXPERIMENTAL_INTERNET
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/io_context b/libstdc++-v3/include/experimental/io_context
index 8b0dba7..3bcc145 100644
--- a/libstdc++-v3/include/experimental/io_context
+++ b/libstdc++-v3/include/experimental/io_context
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_IO_SERVICE
#define _GLIBCXX_EXPERIMENTAL_IO_SERVICE 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/iterator b/libstdc++-v3/include/experimental/iterator
index 51ecd29..96dfe84 100644
--- a/libstdc++-v3/include/experimental/iterator
+++ b/libstdc++-v3/include/experimental/iterator
@@ -34,7 +34,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_ITERATOR
#define _GLIBCXX_EXPERIMENTAL_ITERATOR 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/list b/libstdc++-v3/include/experimental/list
index 5bebf3c..27c9dfd 100644
--- a/libstdc++-v3/include/experimental/list
+++ b/libstdc++-v3/include/experimental/list
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_LIST
#define _GLIBCXX_EXPERIMENTAL_LIST 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/map b/libstdc++-v3/include/experimental/map
index 414c023..3f0f533 100644
--- a/libstdc++-v3/include/experimental/map
+++ b/libstdc++-v3/include/experimental/map
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_MAP
#define _GLIBCXX_EXPERIMENTAL_MAP 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/memory b/libstdc++-v3/include/experimental/memory
index ca6a364..0f8f1b8 100644
--- a/libstdc++-v3/include/experimental/memory
+++ b/libstdc++-v3/include/experimental/memory
@@ -34,7 +34,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_MEMORY
#define _GLIBCXX_EXPERIMENTAL_MEMORY 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/memory_resource b/libstdc++-v3/include/experimental/memory_resource
index bc2fdbf..c36bb88 100644
--- a/libstdc++-v3/include/experimental/memory_resource
+++ b/libstdc++-v3/include/experimental/memory_resource
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_MEMORY_RESOURCE
#define _GLIBCXX_EXPERIMENTAL_MEMORY_RESOURCE 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/net b/libstdc++-v3/include/experimental/net
index a84fdf4..90c604c 100644
--- a/libstdc++-v3/include/experimental/net
+++ b/libstdc++-v3/include/experimental/net
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_NET
#define _GLIBCXX_EXPERIMENTAL_NET
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/netfwd b/libstdc++-v3/include/experimental/netfwd
index e273810..17f8676 100644
--- a/libstdc++-v3/include/experimental/netfwd
+++ b/libstdc++-v3/include/experimental/netfwd
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_NETFWD
#define _GLIBCXX_EXPERIMENTAL_NETFWD 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/numeric b/libstdc++-v3/include/experimental/numeric
index 42580b7..7f06d56 100644
--- a/libstdc++-v3/include/experimental/numeric
+++ b/libstdc++-v3/include/experimental/numeric
@@ -34,7 +34,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_NUMERIC
#define _GLIBCXX_EXPERIMENTAL_NUMERIC 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/propagate_const b/libstdc++-v3/include/experimental/propagate_const
index a3682ae..829a82d 100644
--- a/libstdc++-v3/include/experimental/propagate_const
+++ b/libstdc++-v3/include/experimental/propagate_const
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_PROPAGATE_CONST
#define _GLIBCXX_EXPERIMENTAL_PROPAGATE_CONST 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/ratio b/libstdc++-v3/include/experimental/ratio
index 5b96e72..1325bea 100644
--- a/libstdc++-v3/include/experimental/ratio
+++ b/libstdc++-v3/include/experimental/ratio
@@ -34,7 +34,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_RATIO
#define _GLIBCXX_EXPERIMENTAL_RATIO 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/regex b/libstdc++-v3/include/experimental/regex
index d04dc1e..3c7802c 100644
--- a/libstdc++-v3/include/experimental/regex
+++ b/libstdc++-v3/include/experimental/regex
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_REGEX
#define _GLIBCXX_EXPERIMENTAL_REGEX 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/scope b/libstdc++-v3/include/experimental/scope
index ea273e8..6e1d342 100644
--- a/libstdc++-v3/include/experimental/scope
+++ b/libstdc++-v3/include/experimental/scope
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_SCOPE
#define _GLIBCXX_EXPERIMENTAL_SCOPE 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/set b/libstdc++-v3/include/experimental/set
index 4ccbf6f..6758119 100644
--- a/libstdc++-v3/include/experimental/set
+++ b/libstdc++-v3/include/experimental/set
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_SET
#define _GLIBCXX_EXPERIMENTAL_SET 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/socket b/libstdc++-v3/include/experimental/socket
index 62beb43..8fb9c03 100644
--- a/libstdc++-v3/include/experimental/socket
+++ b/libstdc++-v3/include/experimental/socket
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_SOCKET
#define _GLIBCXX_EXPERIMENTAL_SOCKET
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/string b/libstdc++-v3/include/experimental/string
index d6b18b9..8ab6041 100644
--- a/libstdc++-v3/include/experimental/string
+++ b/libstdc++-v3/include/experimental/string
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_STRING
#define _GLIBCXX_EXPERIMENTAL_STRING 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/string_view b/libstdc++-v3/include/experimental/string_view
index 4eb1a84..8929748b 100644
--- a/libstdc++-v3/include/experimental/string_view
+++ b/libstdc++-v3/include/experimental/string_view
@@ -34,7 +34,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_STRING_VIEW
#define _GLIBCXX_EXPERIMENTAL_STRING_VIEW 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/synchronized_value b/libstdc++-v3/include/experimental/synchronized_value
index 9a91da9..93755e7 100644
--- a/libstdc++-v3/include/experimental/synchronized_value
+++ b/libstdc++-v3/include/experimental/synchronized_value
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_SYNCVAL
#define _GLIBCXX_EXPERIMENTAL_SYNCVAL 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // for std::mutex
diff --git a/libstdc++-v3/include/experimental/system_error b/libstdc++-v3/include/experimental/system_error
index 491b9dc..913995a 100644
--- a/libstdc++-v3/include/experimental/system_error
+++ b/libstdc++-v3/include/experimental/system_error
@@ -34,7 +34,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_SYSTEM_ERROR
#define _GLIBCXX_EXPERIMENTAL_SYSTEM_ERROR 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/timer b/libstdc++-v3/include/experimental/timer
index 8d6e328..1b60f70 100644
--- a/libstdc++-v3/include/experimental/timer
+++ b/libstdc++-v3/include/experimental/timer
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_TIMER
#define _GLIBCXX_EXPERIMENTAL_TIMER 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/tuple b/libstdc++-v3/include/experimental/tuple
index f67f738..c38eb4b 100644
--- a/libstdc++-v3/include/experimental/tuple
+++ b/libstdc++-v3/include/experimental/tuple
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_TUPLE
#define _GLIBCXX_EXPERIMENTAL_TUPLE 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/type_traits b/libstdc++-v3/include/experimental/type_traits
index 3fa88a3..25bb217 100644
--- a/libstdc++-v3/include/experimental/type_traits
+++ b/libstdc++-v3/include/experimental/type_traits
@@ -41,7 +41,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_TYPE_TRAITS
#define _GLIBCXX_EXPERIMENTAL_TYPE_TRAITS 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#if __cplusplus >= 201402L
diff --git a/libstdc++-v3/include/experimental/unordered_map b/libstdc++-v3/include/experimental/unordered_map
index c94bd2c..06a439a 100644
--- a/libstdc++-v3/include/experimental/unordered_map
+++ b/libstdc++-v3/include/experimental/unordered_map
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_UNORDERED_MAP
#define _GLIBCXX_EXPERIMENTAL_UNORDERED_MAP 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/unordered_set b/libstdc++-v3/include/experimental/unordered_set
index 128312c..e752740 100644
--- a/libstdc++-v3/include/experimental/unordered_set
+++ b/libstdc++-v3/include/experimental/unordered_set
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_UNORDERED_SET
#define _GLIBCXX_EXPERIMENTAL_UNORDERED_SET 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted
diff --git a/libstdc++-v3/include/experimental/vector b/libstdc++-v3/include/experimental/vector
index a51fdca..badfe68 100644
--- a/libstdc++-v3/include/experimental/vector
+++ b/libstdc++-v3/include/experimental/vector
@@ -30,7 +30,9 @@
#ifndef _GLIBCXX_EXPERIMENTAL_VECTOR
#define _GLIBCXX_EXPERIMENTAL_VECTOR 1
+#ifdef _GLIBCXX_SYSHDR
#pragma GCC system_header
+#endif
#include <bits/requires_hosted.h> // experimental is currently omitted