https://gcc.gnu.org/g:d3a7302ec5985abcda561886cc724d388c7143cb

commit r15-3714-gd3a7302ec5985abcda561886cc724d388c7143cb
Author: Jason Merrill <ja...@redhat.com>
Date:   Fri Dec 22 13:20:35 2023 -0500

    libstdc++: add #pragma diagnostic
    
    The use of #pragma GCC system_header in libstdc++ has led to bugs going
    undetected for a while due to the silencing of compiler warnings that would
    have revealed them promptly, and also interferes with warnings about
    problematic template instantiations induced by user code.
    
    But removing it, or even compiling with -Wsystem-header, is also problematic
    due to warnings about deliberate uses of extensions.
    
    So this patch adds #pragma GCC diagnostic as needed to suppress these
    warnings.
    
    The change to acinclude.m4 changes -Wabi to warn only in comparison to ABI
    19, to avoid lots of warnings that we now mangle concept requirements, which
    are in any case still experimental.  I checked for any other changes against
    ABI v15, and found only the <format> lambda mangling, which we can ignore.
    
    This also enables -Wsystem-headers while building the library, so we see any
    warnings not silenced by these #pragmas.
    
    libstdc++-v3/ChangeLog:
    
            * include/bits/algorithmfwd.h:
            * include/bits/allocator.h:
            * include/bits/codecvt.h:
            * include/bits/concept_check.h:
            * include/bits/cpp_type_traits.h:
            * include/bits/hashtable.h:
            * include/bits/iterator_concepts.h:
            * include/bits/ostream_insert.h:
            * include/bits/ranges_base.h:
            * include/bits/regex_automaton.h:
            * include/bits/std_abs.h:
            * include/bits/stl_algo.h:
            * include/c_compatibility/fenv.h:
            * include/c_compatibility/inttypes.h:
            * include/c_compatibility/stdint.h:
            * include/ext/concurrence.h:
            * include/ext/type_traits.h:
            * 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:
            * 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/ostream.tcc:
            * include/bits/regex_compiler.tcc:
            * include/bits/sstream.tcc:
            * include/bits/streambuf.tcc:
            * configure: Regenerate.
            * include/bits/c++config:
            * include/c/cassert:
            * include/c/cctype:
            * include/c/cerrno:
            * include/c/cfloat:
            * 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/cwchar:
            * include/c/cwctype:
            * include/c_global/climits:
            * include/c_global/cmath:
            * include/c_global/cstddef:
            * include/c_global/cstdlib:
            * include/decimal/decimal:
            * include/ext/rope:
            * include/std/any:
            * include/std/charconv:
            * include/std/complex:
            * include/std/coroutine:
            * include/std/format:
            * include/std/iomanip:
            * include/std/limits:
            * include/std/numbers:
            * include/tr1/functional:
            * include/tr1/tuple:
            * include/tr1/type_traits:
            * libsupc++/compare:
            * libsupc++/new: Add #pragma GCC diagnostic to suppress
            undesired warnings.
            * acinclude.m4: Change -Wabi version from 2 to 19.
    
    gcc/ChangeLog:
    
            * ginclude/stdint-wrap.h: Add #pragma GCC diagnostic to suppress
            undesired warnings.
            * gsyslimits.h: Likewise.

Diff:
---
 gcc/ginclude/stdint-wrap.h                                       | 3 +++
 gcc/gsyslimits.h                                                 | 3 +++
 libstdc++-v3/include/bits/algorithmfwd.h                         | 5 +++++
 libstdc++-v3/include/bits/allocator.h                            | 4 ++++
 libstdc++-v3/include/bits/codecvt.h                              | 4 ++++
 libstdc++-v3/include/bits/concept_check.h                        | 4 ++++
 libstdc++-v3/include/bits/cpp_type_traits.h                      | 5 +++++
 libstdc++-v3/include/bits/hashtable.h                            | 5 +++++
 libstdc++-v3/include/bits/iterator_concepts.h                    | 4 ++++
 libstdc++-v3/include/bits/ostream_insert.h                       | 4 ++++
 libstdc++-v3/include/bits/ranges_base.h                          | 4 ++++
 libstdc++-v3/include/bits/regex_automaton.h                      | 5 +++++
 libstdc++-v3/include/bits/std_abs.h                              | 6 ++++++
 libstdc++-v3/include/bits/stl_algo.h                             | 5 +++++
 libstdc++-v3/include/c_compatibility/fenv.h                      | 5 +++++
 libstdc++-v3/include/c_compatibility/inttypes.h                  | 5 +++++
 libstdc++-v3/include/c_compatibility/stdint.h                    | 5 +++++
 libstdc++-v3/include/ext/concurrence.h                           | 5 +++++
 libstdc++-v3/include/ext/type_traits.h                           | 5 +++++
 .../testsuite/ext/type_traits/add_unsigned_floating_neg.cc       | 2 +-
 .../testsuite/ext/type_traits/add_unsigned_integer_neg.cc        | 2 +-
 .../testsuite/ext/type_traits/remove_unsigned_floating_neg.cc    | 2 +-
 .../testsuite/ext/type_traits/remove_unsigned_integer_neg.cc     | 2 +-
 libstdc++-v3/acinclude.m4                                        | 2 +-
 libstdc++-v3/include/bits/basic_ios.tcc                          | 4 ++++
 libstdc++-v3/include/bits/basic_string.tcc                       | 4 ++++
 libstdc++-v3/include/bits/fstream.tcc                            | 4 ++++
 libstdc++-v3/include/bits/istream.tcc                            | 4 ++++
 libstdc++-v3/include/bits/locale_classes.tcc                     | 5 +++++
 libstdc++-v3/include/bits/locale_facets.tcc                      | 4 ++++
 libstdc++-v3/include/bits/ostream.tcc                            | 4 ++++
 libstdc++-v3/include/bits/regex_compiler.tcc                     | 7 ++++++-
 libstdc++-v3/include/bits/sstream.tcc                            | 4 ++++
 libstdc++-v3/include/bits/streambuf.tcc                          | 4 ++++
 libstdc++-v3/configure                                           | 2 +-
 libstdc++-v3/include/bits/c++config                              | 7 +++++++
 libstdc++-v3/include/c/cassert                                   | 5 +++++
 libstdc++-v3/include/c/cctype                                    | 5 +++++
 libstdc++-v3/include/c/cerrno                                    | 5 +++++
 libstdc++-v3/include/c/cfloat                                    | 5 +++++
 libstdc++-v3/include/c/climits                                   | 5 +++++
 libstdc++-v3/include/c/clocale                                   | 5 +++++
 libstdc++-v3/include/c/cmath                                     | 5 +++++
 libstdc++-v3/include/c/csetjmp                                   | 5 +++++
 libstdc++-v3/include/c/csignal                                   | 5 +++++
 libstdc++-v3/include/c/cstdarg                                   | 5 +++++
 libstdc++-v3/include/c/cstddef                                   | 5 +++++
 libstdc++-v3/include/c/cstdio                                    | 5 +++++
 libstdc++-v3/include/c/cstdlib                                   | 5 +++++
 libstdc++-v3/include/c/cstring                                   | 5 +++++
 libstdc++-v3/include/c/ctime                                     | 5 +++++
 libstdc++-v3/include/c/cwchar                                    | 5 +++++
 libstdc++-v3/include/c/cwctype                                   | 5 +++++
 libstdc++-v3/include/c_global/climits                            | 5 +++++
 libstdc++-v3/include/c_global/cmath                              | 5 +++++
 libstdc++-v3/include/c_global/cstddef                            | 5 +++++
 libstdc++-v3/include/c_global/cstdlib                            | 4 ++++
 libstdc++-v3/include/decimal/decimal                             | 4 ++++
 libstdc++-v3/include/ext/rope                                    | 6 ++++++
 libstdc++-v3/include/std/any                                     | 5 +++++
 libstdc++-v3/include/std/charconv                                | 4 ++++
 libstdc++-v3/include/std/complex                                 | 4 ++++
 libstdc++-v3/include/std/coroutine                               | 4 ++++
 libstdc++-v3/include/std/format                                  | 9 +++++++++
 libstdc++-v3/include/std/iomanip                                 | 4 ++++
 libstdc++-v3/include/std/limits                                  | 6 ++++++
 libstdc++-v3/include/std/numbers                                 | 5 +++++
 libstdc++-v3/include/tr1/functional                              | 5 +++++
 libstdc++-v3/include/tr1/tuple                                   | 4 ++++
 libstdc++-v3/include/tr1/type_traits                             | 4 ++++
 libstdc++-v3/libsupc++/compare                                   | 6 ++++++
 libstdc++-v3/libsupc++/new                                       | 4 ++++
 72 files changed, 320 insertions(+), 7 deletions(-)

diff --git a/gcc/ginclude/stdint-wrap.h b/gcc/ginclude/stdint-wrap.h
index 83b6f70c8379..9d8eb5f786af 100644
--- a/gcc/ginclude/stdint-wrap.h
+++ b/gcc/ginclude/stdint-wrap.h
@@ -6,7 +6,10 @@
 #  undef __STDC_CONSTANT_MACROS
 #  define __STDC_CONSTANT_MACROS
 # endif
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
 # include_next <stdint.h>
+#pragma GCC diagnostic pop
 #else
 # include "stdint-gcc.h"
 #endif
diff --git a/gcc/gsyslimits.h b/gcc/gsyslimits.h
index a3628025e8a1..82c82e91cde2 100644
--- a/gcc/gsyslimits.h
+++ b/gcc/gsyslimits.h
@@ -4,5 +4,8 @@
    instead of this text.  */
 
 #define _GCC_NEXT_LIMITS_H             /* tell gcc's limits.h to recurse */
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
 #include_next <limits.h>
+#pragma GCC diagnostic pop
 #undef _GCC_NEXT_LIMITS_H
diff --git a/libstdc++-v3/include/bits/algorithmfwd.h 
b/libstdc++-v3/include/bits/algorithmfwd.h
index 34bf9921f435..7f1f15970abe 100644
--- a/libstdc++-v3/include/bits/algorithmfwd.h
+++ b/libstdc++-v3/include/bits/algorithmfwd.h
@@ -39,6 +39,9 @@
 #include <initializer_list>
 #endif
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions"
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -962,6 +965,8 @@ _GLIBCXX_END_NAMESPACE_ALGO
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
+
 #ifdef _GLIBCXX_PARALLEL
 # include <parallel/algorithmfwd.h>
 #endif
diff --git a/libstdc++-v3/include/bits/allocator.h 
b/libstdc++-v3/include/bits/allocator.h
index 9e75b37fce7f..ebb487a3ffeb 100644
--- a/libstdc++-v3/include/bits/allocator.h
+++ b/libstdc++-v3/include/bits/allocator.h
@@ -49,6 +49,9 @@
 #include <type_traits>
 #endif
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions"
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -292,4 +295,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
 #endif
diff --git a/libstdc++-v3/include/bits/codecvt.h 
b/libstdc++-v3/include/bits/codecvt.h
index 41a1d30b11d8..c51cc7d220d3 100644
--- a/libstdc++-v3/include/bits/codecvt.h
+++ b/libstdc++-v3/include/bits/codecvt.h
@@ -41,6 +41,9 @@
 #include <bits/c++config.h>
 #include <bits/locale_classes.h> // locale::facet
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // extern template
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -840,4 +843,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
 #endif // _CODECVT_H
diff --git a/libstdc++-v3/include/bits/concept_check.h 
b/libstdc++-v3/include/bits/concept_check.h
index 65f662b70bf8..6479f2fa919e 100644
--- a/libstdc++-v3/include/bits/concept_check.h
+++ b/libstdc++-v3/include/bits/concept_check.h
@@ -34,6 +34,9 @@
 
 #include <bits/c++config.h>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wvariadic-macros"
+
 // All places in libstdc++-v3 where these are used, or /might/ be used, or
 // don't need to be used, or perhaps /should/ be used, are commented with
 // "concept requirements" (and maybe some more text).  So grep like crazy
@@ -78,4 +81,5 @@
 
 #endif // enable/disable
 
+#pragma GCC diagnostic pop
 #endif // _GLIBCXX_CONCEPT_CHECK
diff --git a/libstdc++-v3/include/bits/cpp_type_traits.h 
b/libstdc++-v3/include/bits/cpp_type_traits.h
index ff74c5572458..e3a80e06346e 100644
--- a/libstdc++-v3/include/bits/cpp_type_traits.h
+++ b/libstdc++-v3/include/bits/cpp_type_traits.h
@@ -40,6 +40,9 @@
 # include <type_traits> // is_same_v, is_integral_v
 #endif
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wlong-long"
+
 //
 // This file provides some compile-time information about various types.
 // These representations were designed, on purpose, to be constant-expressions
@@ -582,4 +585,6 @@ _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 } // extern "C++"
 
+#pragma GCC diagnostic pop
+
 #endif //_CPP_TYPE_TRAITS_H
diff --git a/libstdc++-v3/include/bits/hashtable.h 
b/libstdc++-v3/include/bits/hashtable.h
index 361da2b3b4d4..b02bddf5635b 100644
--- a/libstdc++-v3/include/bits/hashtable.h
+++ b/libstdc++-v3/include/bits/hashtable.h
@@ -40,6 +40,9 @@
 # include <bits/node_handle.h>
 #endif
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions"
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -2758,4 +2761,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
+
 #endif // _HASHTABLE_H
diff --git a/libstdc++-v3/include/bits/iterator_concepts.h 
b/libstdc++-v3/include/bits/iterator_concepts.h
index 642c709fee0c..4ac6e6bfbe7a 100644
--- a/libstdc++-v3/include/bits/iterator_concepts.h
+++ b/libstdc++-v3/include/bits/iterator_concepts.h
@@ -37,6 +37,9 @@
 #include <bits/ptr_traits.h>   // to_address
 #include <bits/ranges_cmp.h>   // identity, ranges::less
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // __int128
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -1044,5 +1047,6 @@ namespace ranges
 #endif // C++20 library concepts
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
+#pragma GCC diagnostic pop
 #endif // C++20
 #endif // _ITERATOR_CONCEPTS_H
diff --git a/libstdc++-v3/include/bits/ostream_insert.h 
b/libstdc++-v3/include/bits/ostream_insert.h
index e6857615790a..d61b4b14f97a 100644
--- a/libstdc++-v3/include/bits/ostream_insert.h
+++ b/libstdc++-v3/include/bits/ostream_insert.h
@@ -36,6 +36,9 @@
 #include <bits/cxxabi_forced.h>
 #include <bits/exception_defines.h>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // extern template
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -131,4 +134,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
 #endif /* _OSTREAM_INSERT_H */
diff --git a/libstdc++-v3/include/bits/ranges_base.h 
b/libstdc++-v3/include/bits/ranges_base.h
index 63eb552b48bb..0c6a4e83bb24 100644
--- a/libstdc++-v3/include/bits/ranges_base.h
+++ b/libstdc++-v3/include/bits/ranges_base.h
@@ -39,6 +39,9 @@
 #include <bits/max_size_type.h>
 #include <bits/version.h>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // __int128
+
 #ifdef __cpp_lib_concepts
 namespace std _GLIBCXX_VISIBILITY(default)
 {
@@ -1073,5 +1076,6 @@ namespace ranges
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 #endif // library concepts
+#pragma GCC diagnostic pop
 #endif // C++20
 #endif // _GLIBCXX_RANGES_BASE_H
diff --git a/libstdc++-v3/include/bits/regex_automaton.h 
b/libstdc++-v3/include/bits/regex_automaton.h
index 574ec90dc3a1..03179a0e6876 100644
--- a/libstdc++-v3/include/bits/regex_automaton.h
+++ b/libstdc++-v3/include/bits/regex_automaton.h
@@ -33,6 +33,9 @@
 #define _GLIBCXX_REGEX_STATE_LIMIT 100000
 #endif
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // anon struct
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -397,4 +400,6 @@ namespace __detail
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
+
 #include <bits/regex_automaton.tcc>
diff --git a/libstdc++-v3/include/bits/std_abs.h 
b/libstdc++-v3/include/bits/std_abs.h
index 48d44160baba..d143ec14179d 100644
--- a/libstdc++-v3/include/bits/std_abs.h
+++ b/libstdc++-v3/include/bits/std_abs.h
@@ -34,6 +34,10 @@
 
 #include <bits/c++config.h>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+#pragma GCC diagnostic ignored "-Wlong-long"
+
 #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
 #include_next <stdlib.h>
 #ifdef __CORRECT_ISO_CPP_MATH_H_PROTO
@@ -151,4 +155,6 @@ _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 } // extern "C++"
 
+#pragma GCC diagnostic pop
+
 #endif // _GLIBCXX_BITS_STD_ABS_H
diff --git a/libstdc++-v3/include/bits/stl_algo.h 
b/libstdc++-v3/include/bits/stl_algo.h
index 778a37ac46f4..a1ef665506d1 100644
--- a/libstdc++-v3/include/bits/stl_algo.h
+++ b/libstdc++-v3/include/bits/stl_algo.h
@@ -72,6 +72,9 @@
 # endif
 #endif
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // inline namespace
+
 // See concept_check.h for the __glibcxx_*_requires macros.
 
 namespace std _GLIBCXX_VISIBILITY(default)
@@ -5901,4 +5904,6 @@ _GLIBCXX_END_NAMESPACE_ALGO
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
+
 #endif /* _STL_ALGO_H */
diff --git a/libstdc++-v3/include/c_compatibility/fenv.h 
b/libstdc++-v3/include/c_compatibility/fenv.h
index 6800814bca5a..a587e7308af9 100644
--- a/libstdc++-v3/include/c_compatibility/fenv.h
+++ b/libstdc++-v3/include/c_compatibility/fenv.h
@@ -31,11 +31,16 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include <bits/c++config.h>
 #if _GLIBCXX_HAVE_FENV_H
 # include_next <fenv.h>
 #endif
 
+#pragma GCC diagnostic pop
+
 #if __cplusplus >= 201103L
 
 #if _GLIBCXX_USE_C99_FENV
diff --git a/libstdc++-v3/include/c_compatibility/inttypes.h 
b/libstdc++-v3/include/c_compatibility/inttypes.h
index bc63119097cb..5a428ce0bd75 100644
--- a/libstdc++-v3/include/c_compatibility/inttypes.h
+++ b/libstdc++-v3/include/c_compatibility/inttypes.h
@@ -31,6 +31,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include <bits/c++config.h>
 
 #if __cplusplus >= 201103L
@@ -88,4 +91,6 @@ namespace std
 
 #endif // C++11
 
+#pragma GCC diagnostic pop
+
 #endif // _GLIBCXX_INTTYPES_H
diff --git a/libstdc++-v3/include/c_compatibility/stdint.h 
b/libstdc++-v3/include/c_compatibility/stdint.h
index 0b6a8c166270..2d892e7ceb20 100644
--- a/libstdc++-v3/include/c_compatibility/stdint.h
+++ b/libstdc++-v3/include/c_compatibility/stdint.h
@@ -31,6 +31,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include <bits/c++config.h>
 
 #if __cplusplus >= 201103L
@@ -107,4 +110,6 @@ namespace std
 
 #endif // C++11
 
+#pragma GCC diagnostic pop
+
 #endif // _GLIBCXX_STDINT_H
diff --git a/libstdc++-v3/include/ext/concurrence.h 
b/libstdc++-v3/include/ext/concurrence.h
index 7629c1b1129f..8188c1366b0b 100644
--- a/libstdc++-v3/include/ext/concurrence.h
+++ b/libstdc++-v3/include/ext/concurrence.h
@@ -37,6 +37,9 @@
 #include <bits/cpp_type_traits.h>
 #include <ext/type_traits.h>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions"
+
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -312,4 +315,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/ext/type_traits.h 
b/libstdc++-v3/include/ext/type_traits.h
index 75d7edf85b87..165e1b43da00 100644
--- a/libstdc++-v3/include/ext/type_traits.h
+++ b/libstdc++-v3/include/ext/type_traits.h
@@ -34,6 +34,9 @@
 #include <bits/c++config.h>
 #include <bits/cpp_type_traits.h>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wlong-long"
+
 extern "C++" {
 
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
@@ -270,4 +273,6 @@ _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 } // extern "C++"
 
+#pragma GCC diagnostic pop
+
 #endif 
diff --git 
a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc 
b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
index 261fe84b0aeb..458748af28aa 100644
--- a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
+++ b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
@@ -35,4 +35,4 @@ int main()
 }
 
 // { dg-error "required from" "" { target *-*-* } 28 }
-// { dg-error "no type" "" { target *-*-* } 71 } 
+// { dg-error "no type" "" { target *-*-* } 74 }
diff --git a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc 
b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
index f592478dd971..c1dde44e1188 100644
--- a/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
+++ b/libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
@@ -36,5 +36,5 @@ int main()
 }
 
 // { dg-error "invalid use of incomplete" "" { target *-*-* } 28 } 
-// { dg-error "declaration of" "" { target *-*-* } 100 }
 // { dg-error "declaration of" "" { target *-*-* } 103 }
+// { dg-error "declaration of" "" { target *-*-* } 106 }
diff --git 
a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc 
b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
index 42078e556f63..5f77c1a652a3 100644
--- a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
+++ b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
@@ -35,4 +35,4 @@ int main()
 }
 
 // { dg-error "required from" "" { target *-*-* } 28 }
-// { dg-error "no type" "" { target *-*-* } 114 }
+// { dg-error "no type" "" { target *-*-* } 117 }
diff --git 
a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc 
b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
index f017aecdb8a6..7f5a304c5264 100644
--- a/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
+++ b/libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
@@ -36,5 +36,5 @@ int main()
 }
 
 // { dg-error "invalid use of incomplete" "" { target *-*-* } 28 } 
-// { dg-error "declaration of" "" { target *-*-* } 143 }
 // { dg-error "declaration of" "" { target *-*-* } 146 }
+// { dg-error "declaration of" "" { target *-*-* } 149 }
diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4
index e4ed583b3ae3..768c2991ec29 100644
--- a/libstdc++-v3/acinclude.m4
+++ b/libstdc++-v3/acinclude.m4
@@ -707,7 +707,7 @@ AC_DEFUN([GLIBCXX_EXPORT_FLAGS], [
   # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
   AC_SUBST(OPTIMIZE_CXXFLAGS)
 
-  WARN_FLAGS="-Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2"
+  WARN_FLAGS="-Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=19 
-Wsystem-headers"
   AC_SUBST(WARN_FLAGS)
 ])
 
diff --git a/libstdc++-v3/include/bits/basic_ios.tcc 
b/libstdc++-v3/include/bits/basic_ios.tcc
index 0197bdf8f671..1519603f6b5c 100644
--- a/libstdc++-v3/include/bits/basic_ios.tcc
+++ b/libstdc++-v3/include/bits/basic_ios.tcc
@@ -32,6 +32,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // extern template
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -181,4 +184,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
 #endif
diff --git a/libstdc++-v3/include/bits/basic_string.tcc 
b/libstdc++-v3/include/bits/basic_string.tcc
index e458c1880b2e..8a764855698d 100644
--- a/libstdc++-v3/include/bits/basic_string.tcc
+++ b/libstdc++-v3/include/bits/basic_string.tcc
@@ -41,6 +41,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions"
+
 #include <bits/cxxabi_forced.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
@@ -1031,4 +1034,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
 #endif
diff --git a/libstdc++-v3/include/bits/fstream.tcc 
b/libstdc++-v3/include/bits/fstream.tcc
index a5accecd8465..7b246ad59d2c 100644
--- a/libstdc++-v3/include/bits/fstream.tcc
+++ b/libstdc++-v3/include/bits/fstream.tcc
@@ -36,6 +36,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // extern template
+
 #include <bits/cxxabi_forced.h>
 #include <bits/move.h>   // for swap
 #include <cerrno>
@@ -1094,4 +1097,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
 #endif
diff --git a/libstdc++-v3/include/bits/istream.tcc 
b/libstdc++-v3/include/bits/istream.tcc
index 16423bfbfcb1..23a7c8497779 100644
--- a/libstdc++-v3/include/bits/istream.tcc
+++ b/libstdc++-v3/include/bits/istream.tcc
@@ -36,6 +36,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // extern template
+
 #include <bits/cxxabi_forced.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
@@ -1166,4 +1169,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
 #endif
diff --git a/libstdc++-v3/include/bits/locale_classes.tcc 
b/libstdc++-v3/include/bits/locale_classes.tcc
index 1b5f5f2417c8..4f3af2461a5d 100644
--- a/libstdc++-v3/include/bits/locale_classes.tcc
+++ b/libstdc++-v3/include/bits/locale_classes.tcc
@@ -36,6 +36,10 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // extern template
+#pragma GCC diagnostic ignored "-Wvariadic-macros"
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -384,4 +388,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
 #endif
diff --git a/libstdc++-v3/include/bits/locale_facets.tcc 
b/libstdc++-v3/include/bits/locale_facets.tcc
index cde81bffc08e..4e9bf6fb8f94 100644
--- a/libstdc++-v3/include/bits/locale_facets.tcc
+++ b/libstdc++-v3/include/bits/locale_facets.tcc
@@ -32,6 +32,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // extern template
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -1433,4 +1436,5 @@ _GLIBCXX_END_NAMESPACE_LDBL
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 
+#pragma GCC diagnostic pop
 #endif
diff --git a/libstdc++-v3/include/bits/ostream.tcc 
b/libstdc++-v3/include/bits/ostream.tcc
index 972de79ea700..7aeb23ad38d1 100644
--- a/libstdc++-v3/include/bits/ostream.tcc
+++ b/libstdc++-v3/include/bits/ostream.tcc
@@ -36,6 +36,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // extern template
+
 #include <bits/cxxabi_forced.h>
 
 namespace std _GLIBCXX_VISIBILITY(default)
@@ -390,4 +393,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
 #endif
diff --git a/libstdc++-v3/include/bits/regex_compiler.tcc 
b/libstdc++-v3/include/bits/regex_compiler.tcc
index 3c6cb6649df0..9c5a46a47cd0 100644
--- a/libstdc++-v3/include/bits/regex_compiler.tcc
+++ b/libstdc++-v3/include/bits/regex_compiler.tcc
@@ -55,6 +55,9 @@
 // All dummy nodes will be eliminated at the end of compilation.
 */
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++20-extensions" // variadic macro with 0 
args
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -621,4 +624,6 @@ namespace __detail
 } // namespace __detail
 
 _GLIBCXX_END_NAMESPACE_VERSION
-} // namespace
+} // namespace std
+
+#pragma GCC diagnostic pop
diff --git a/libstdc++-v3/include/bits/sstream.tcc 
b/libstdc++-v3/include/bits/sstream.tcc
index 9acf15f399ff..7eb5561b6309 100644
--- a/libstdc++-v3/include/bits/sstream.tcc
+++ b/libstdc++-v3/include/bits/sstream.tcc
@@ -36,6 +36,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // extern template
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -304,4 +307,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
 #endif
diff --git a/libstdc++-v3/include/bits/streambuf.tcc 
b/libstdc++-v3/include/bits/streambuf.tcc
index 3cfee68defc1..0c28033f4916 100644
--- a/libstdc++-v3/include/bits/streambuf.tcc
+++ b/libstdc++-v3/include/bits/streambuf.tcc
@@ -36,6 +36,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // extern template
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -166,4 +169,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
 #endif
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index 005c4a29fd09..de05e63de4c5 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -55720,7 +55720,7 @@ $as_echo "$gxx_include_dir" >&6; }
   # OPTIMIZE_CXXFLAGS = -O3 -fstrict-aliasing -fvtable-gc
 
 
-  WARN_FLAGS="-Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=2"
+  WARN_FLAGS="-Wall -Wextra -Wwrite-strings -Wcast-qual -Wabi=19 
-Wsystem-headers"
 
 
 
diff --git a/libstdc++-v3/include/bits/c++config 
b/libstdc++-v3/include/bits/c++config
index 54d455be2266..66d03cfd0375 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -32,6 +32,11 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wvariadic-macros"
+#pragma GCC diagnostic ignored "-Wc++11-extensions"
+#pragma GCC diagnostic ignored "-Wc++23-extensions" // bf16
+
 // The major release number for the GCC release the C++ library belongs to.
 #define _GLIBCXX_RELEASE
 
@@ -910,4 +915,6 @@ namespace __gnu_cxx
 #endif // __has_include
 #endif // C++17
 
+#pragma GCC diagnostic pop
+
 // End of prewritten config; the settings discovered at configure time follow.
diff --git a/libstdc++-v3/include/c/cassert b/libstdc++-v3/include/c/cassert
index 5cd11fff9ece..ef6e844a72b7 100644
--- a/libstdc++-v3/include/c/cassert
+++ b/libstdc++-v3/include/c/cassert
@@ -30,5 +30,10 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include <bits/c++config.h>
 #include_next <assert.h>
+
+#pragma GCC diagnostic pop
diff --git a/libstdc++-v3/include/c/cctype b/libstdc++-v3/include/c/cctype
index c6f650394357..a7a59551d869 100644
--- a/libstdc++-v3/include/c/cctype
+++ b/libstdc++-v3/include/c/cctype
@@ -31,6 +31,11 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include_next <ctype.h>
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c/cerrno b/libstdc++-v3/include/c/cerrno
index 9e47b182d25c..29bf0b403aad 100644
--- a/libstdc++-v3/include/c/cerrno
+++ b/libstdc++-v3/include/c/cerrno
@@ -40,9 +40,14 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include <bits/c++config.h>
 #include_next <errno.h>
 
+#pragma GCC diagnostic pop
+
 // Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998
 #ifndef errno
 #define errno errno
diff --git a/libstdc++-v3/include/c/cfloat b/libstdc++-v3/include/c/cfloat
index 81d9772ed9f6..1f9edada950c 100644
--- a/libstdc++-v3/include/c/cfloat
+++ b/libstdc++-v3/include/c/cfloat
@@ -31,7 +31,12 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include <bits/c++config.h>
 #include_next <float.h>
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c/climits b/libstdc++-v3/include/c/climits
index 255bed411259..846fe190707a 100644
--- a/libstdc++-v3/include/c/climits
+++ b/libstdc++-v3/include/c/climits
@@ -31,7 +31,12 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include <bits/c++config.h>
 #include_next <limits.h>
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c/clocale b/libstdc++-v3/include/c/clocale
index 4258df1958b6..62d85ed6609a 100644
--- a/libstdc++-v3/include/c/clocale
+++ b/libstdc++-v3/include/c/clocale
@@ -31,6 +31,11 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include_next <locale.h>
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c/cmath b/libstdc++-v3/include/c/cmath
index 43020eee9d29..371ee59986c8 100644
--- a/libstdc++-v3/include/c/cmath
+++ b/libstdc++-v3/include/c/cmath
@@ -33,8 +33,13 @@
 
 #include <bits/c++config.h>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include_next <math.h>
 
+#pragma GCC diagnostic pop
+
 // Get rid of those macros defined in <math.h> in lieu of real functions.
 #undef abs
 #undef div
diff --git a/libstdc++-v3/include/c/csetjmp b/libstdc++-v3/include/c/csetjmp
index 4a5b0334590f..acf113a0c5a1 100644
--- a/libstdc++-v3/include/c/csetjmp
+++ b/libstdc++-v3/include/c/csetjmp
@@ -31,8 +31,13 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include_next <setjmp.h>
 
+#pragma GCC diagnostic pop
+
 // Get rid of those macros defined in <setjmp.h> in lieu of real functions.
 #undef longjmp
 
diff --git a/libstdc++-v3/include/c/csignal b/libstdc++-v3/include/c/csignal
index 040b48368f94..c04bb6042f45 100644
--- a/libstdc++-v3/include/c/csignal
+++ b/libstdc++-v3/include/c/csignal
@@ -31,6 +31,11 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include_next <signal.h>
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c/cstdarg b/libstdc++-v3/include/c/cstdarg
index 5d97e043da84..7648662680c0 100644
--- a/libstdc++-v3/include/c/cstdarg
+++ b/libstdc++-v3/include/c/cstdarg
@@ -31,7 +31,12 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #undef __need___va_list
 #include_next <stdarg.h>
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c/cstddef b/libstdc++-v3/include/c/cstddef
index 4fd889a1dffc..e1435b94556b 100644
--- a/libstdc++-v3/include/c/cstddef
+++ b/libstdc++-v3/include/c/cstddef
@@ -31,10 +31,15 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #define __need_size_t
 #define __need_ptrdiff_t
 #define __need_NULL
 #define __need_offsetof
 #include_next <stddef.h>
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c/cstdio b/libstdc++-v3/include/c/cstdio
index 01293054d501..99aead4ef9c8 100644
--- a/libstdc++-v3/include/c/cstdio
+++ b/libstdc++-v3/include/c/cstdio
@@ -31,8 +31,13 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include_next <stdio.h>
 
+#pragma GCC diagnostic pop
+
 // Get rid of those macros defined in <stdio.h> in lieu of real functions.
 #undef clearerr
 #undef fclose
diff --git a/libstdc++-v3/include/c/cstdlib b/libstdc++-v3/include/c/cstdlib
index f5707f8a8ce4..75e6382c01b2 100644
--- a/libstdc++-v3/include/c/cstdlib
+++ b/libstdc++-v3/include/c/cstdlib
@@ -31,6 +31,11 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include_next <stdlib.h>
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c/cstring b/libstdc++-v3/include/c/cstring
index 0082080fcab0..05d75182a7ac 100644
--- a/libstdc++-v3/include/c/cstring
+++ b/libstdc++-v3/include/c/cstring
@@ -31,6 +31,11 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include_next <string.h>
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c/ctime b/libstdc++-v3/include/c/ctime
index 5476ff7da399..73e2a7a01671 100644
--- a/libstdc++-v3/include/c/ctime
+++ b/libstdc++-v3/include/c/ctime
@@ -31,6 +31,11 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include_next <time.h>
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c/cwchar b/libstdc++-v3/include/c/cwchar
index 7a62eb74abbf..921de2677507 100644
--- a/libstdc++-v3/include/c/cwchar
+++ b/libstdc++-v3/include/c/cwchar
@@ -35,10 +35,15 @@
 #include <cstddef>
 #include <ctime>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #if _GLIBCXX_HAVE_WCHAR_H
 #include_next <wchar.h>
 #endif
 
+#pragma GCC diagnostic pop
+
 // Need to do a bit of trickery here with mbstate_t as char_traits
 // assumes it is in wchar.h, regardless of wchar_t specializations.
 #ifndef _GLIBCXX_HAVE_MBSTATE_T
diff --git a/libstdc++-v3/include/c/cwctype b/libstdc++-v3/include/c/cwctype
index 011ceadbb1b4..0d2f55d9d6d0 100644
--- a/libstdc++-v3/include/c/cwctype
+++ b/libstdc++-v3/include/c/cwctype
@@ -31,10 +31,15 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
+
 #include <bits/c++config.h>
 
 #if _GLIBCXX_HAVE_WCTYPE_H
 #include_next <wctype.h>
 #endif
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c_global/climits 
b/libstdc++-v3/include/c_global/climits
index 7e374ef0c793..c85fc283ae6b 100644
--- a/libstdc++-v3/include/c_global/climits
+++ b/libstdc++-v3/include/c_global/climits
@@ -44,6 +44,9 @@
 #ifndef _GLIBCXX_CLIMITS
 #define _GLIBCXX_CLIMITS 1
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wlong-long"
+
 #ifndef LLONG_MIN
 #define LLONG_MIN (-__LONG_LONG_MAX__ - 1)
 #endif
@@ -56,4 +59,6 @@
 #define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1)
 #endif
 
+#pragma GCC diagnostic pop
+
 #endif
diff --git a/libstdc++-v3/include/c_global/cmath 
b/libstdc++-v3/include/c_global/cmath
index dd0174f1987f..4958dfd2ff16 100644
--- a/libstdc++-v3/include/c_global/cmath
+++ b/libstdc++-v3/include/c_global/cmath
@@ -43,9 +43,14 @@
 #include <bits/c++config.h>
 #include <bits/cpp_type_traits.h>
 #include <ext/type_traits.h>
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
 #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
 #include_next <math.h>
 #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
+#pragma GCC diagnostic pop
+
 #include <bits/std_abs.h>
 
 #ifndef _GLIBCXX_CMATH
diff --git a/libstdc++-v3/include/c_global/cstddef 
b/libstdc++-v3/include/c_global/cstddef
index b25a6b3eec90..f49f56ae3729 100644
--- a/libstdc++-v3/include/c_global/cstddef
+++ b/libstdc++-v3/include/c_global/cstddef
@@ -52,6 +52,9 @@
 #define __glibcxx_want_byte
 #include <bits/version.h>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // __int128
+
 extern "C++"
 {
 #if __cplusplus >= 201103L
@@ -189,4 +192,6 @@ _GLIBCXX_END_NAMESPACE_VERSION
 #endif // __cpp_lib_byte
 } // extern "C++"
 
+#pragma GCC diagnostic pop
+
 #endif // _GLIBCXX_CSTDDEF
diff --git a/libstdc++-v3/include/c_global/cstdlib 
b/libstdc++-v3/include/c_global/cstdlib
index 69e7a39eb44e..72baff249915 100644
--- a/libstdc++-v3/include/c_global/cstdlib
+++ b/libstdc++-v3/include/c_global/cstdlib
@@ -75,9 +75,13 @@ namespace std
 
 // Need to ensure this finds the C library's <stdlib.h> not a libstdc++
 // wrapper that might already be installed later in the include search path.
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // include_next
 #define _GLIBCXX_INCLUDE_NEXT_C_HEADERS
 #include_next <stdlib.h>
 #undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS
+#pragma GCC diagnostic pop
+
 #include <bits/std_abs.h>
 
 // Get rid of those macros defined in <stdlib.h> in lieu of real functions.
diff --git a/libstdc++-v3/include/decimal/decimal 
b/libstdc++-v3/include/decimal/decimal
index d20e012f9c52..a64ddde4756d 100644
--- a/libstdc++-v3/include/decimal/decimal
+++ b/libstdc++-v3/include/decimal/decimal
@@ -33,6 +33,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // DF suffix
+
 #include <bits/c++config.h>
 
 #ifndef _GLIBCXX_USE_DECIMAL_FLOAT
@@ -491,4 +494,5 @@ _GLIBCXX_END_NAMESPACE_VERSION
 
 #include <decimal/decimal.h>
 
+#pragma GCC diagnostic pop
 #endif /* _GLIBCXX_DECIMAL */
diff --git a/libstdc++-v3/include/ext/rope b/libstdc++-v3/include/ext/rope
index b5ebb1322742..19199e828067 100644
--- a/libstdc++-v3/include/ext/rope
+++ b/libstdc++-v3/include/ext/rope
@@ -66,6 +66,10 @@
 
 #include <ext/memory> // For uninitialized_copy_n
 
+// Ignore warnings about default member initializers.
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions"
+
 namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -3009,6 +3013,8 @@ namespace tr1
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
+
 # include <ext/ropeimpl.h>
 
 #endif
diff --git a/libstdc++-v3/include/std/any b/libstdc++-v3/include/std/any
index 9ae29aab99fa..d24260eaacea 100644
--- a/libstdc++-v3/include/std/any
+++ b/libstdc++-v3/include/std/any
@@ -42,6 +42,9 @@
 #include <type_traits>
 #include <bits/utility.h> // in_place_type_t
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations" // aligned_storage
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -661,5 +664,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
+
 #endif // __cpp_lib_any
 #endif // _GLIBCXX_ANY
diff --git a/libstdc++-v3/include/std/charconv 
b/libstdc++-v3/include/std/charconv
index 00c4f206922a..de671393b88e 100644
--- a/libstdc++-v3/include/std/charconv
+++ b/libstdc++-v3/include/std/charconv
@@ -31,6 +31,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // __int128
+
 #include <bits/requires_hosted.h> // for error codes
 
 // As an extension we support <charconv> in C++14, but this header should not
@@ -932,4 +935,5 @@ namespace __detail
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 #endif // C++14
+#pragma GCC diagnostic pop
 #endif // _GLIBCXX_CHARCONV
diff --git a/libstdc++-v3/include/std/complex b/libstdc++-v3/include/std/complex
index be810b6d05d2..c688d0cb7284 100644
--- a/libstdc++-v3/include/std/complex
+++ b/libstdc++-v3/include/std/complex
@@ -38,6 +38,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // extern template
+
 #include <bits/c++config.h>
 #include <bits/cpp_type_traits.h>
 #include <ext/type_traits.h>
@@ -2650,4 +2653,5 @@ _GLIBCXX_END_NAMESPACE_VERSION
 #pragma clang diagnostic pop
 #endif
 
+#pragma GCC diagnostic pop
 #endif  /* _GLIBCXX_COMPLEX */
diff --git a/libstdc++-v3/include/std/coroutine 
b/libstdc++-v3/include/std/coroutine
index ccd016b255eb..30b4d33711e5 100644
--- a/libstdc++-v3/include/std/coroutine
+++ b/libstdc++-v3/include/std/coroutine
@@ -31,6 +31,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++17-extensions"
+
 #define __glibcxx_want_coroutine
 #include <bits/version.h>
 
@@ -358,4 +361,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
 #endif // __cpp_lib_coroutine
 
+#pragma GCC diagnostic pop
 #endif // _GLIBCXX_COROUTINE
diff --git a/libstdc++-v3/include/std/format b/libstdc++-v3/include/std/format
index e963d7f79b33..4c5377aabec6 100644
--- a/libstdc++-v3/include/std/format
+++ b/libstdc++-v3/include/std/format
@@ -63,6 +63,10 @@
 # include <cctype>
 #endif
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // __int128
+#pragma GCC diagnostic ignored "-Wc++23-extensions" // bf16
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -1674,6 +1678,10 @@ namespace __format
 
              do
                {
+                 // Mangling of this lambda, and thus resize_and_overwrite
+                 // instantiated with it, was fixed in ABI 18 (G++ 13).  Since
+                 // <format> was new in G++ 13, and is experimental, that
+                 // isn't a problem.
                  auto __overwrite = [&__to_chars, &__res] (char* __p, size_t 
__n)
                  {
                    __res = __to_chars(__p + 1, __p + __n - 1);
@@ -4737,4 +4745,5 @@ namespace __format
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 #endif // __cpp_lib_format
+#pragma GCC diagnostic pop
 #endif // _GLIBCXX_FORMAT
diff --git a/libstdc++-v3/include/std/iomanip b/libstdc++-v3/include/std/iomanip
index fdf80fc8b508..9d8ecea5d65a 100644
--- a/libstdc++-v3/include/std/iomanip
+++ b/libstdc++-v3/include/std/iomanip
@@ -35,6 +35,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions"
+
 #include <bits/requires_hosted.h> // iostreams
 
 #include <bits/c++config.h>
@@ -543,4 +546,5 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace
 
+#pragma GCC diagnostic pop
 #endif /* _GLIBCXX_IOMANIP */
diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits
index 4b0698e47134..b0ab57c1ad71 100644
--- a/libstdc++-v3/include/std/limits
+++ b/libstdc++-v3/include/std/limits
@@ -39,6 +39,11 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // Q suffix
+#pragma GCC diagnostic ignored "-Wlong-long"
+#pragma GCC diagnostic ignored "-Wc++23-extensions"
+
 #include <bits/c++config.h>
 
 //
@@ -2229,4 +2234,5 @@ _GLIBCXX_END_NAMESPACE_VERSION
 #undef __glibcxx_digits10
 #undef __glibcxx_max_digits10
 
+#pragma GCC diagnostic pop
 #endif // _GLIBCXX_NUMERIC_LIMITS
diff --git a/libstdc++-v3/include/std/numbers b/libstdc++-v3/include/std/numbers
index 9836afac6451..f04000f1dd90 100644
--- a/libstdc++-v3/include/std/numbers
+++ b/libstdc++-v3/include/std/numbers
@@ -38,6 +38,9 @@
 
 #include <type_traits>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // Q extension
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -232,5 +235,7 @@ __glibcxx_numbers (__float128, Q);
 _GLIBCXX_END_NAMESPACE_VERSION
 } // namespace std
 
+#pragma GCC diagnostic pop
+
 #endif // __cpp_lib_math_constants
 #endif // _GLIBCXX_NUMBERS
diff --git a/libstdc++-v3/include/tr1/functional 
b/libstdc++-v3/include/tr1/functional
index 5fc808623a7f..f2cd42bed4ef 100644
--- a/libstdc++-v3/include/tr1/functional
+++ b/libstdc++-v3/include/tr1/functional
@@ -44,6 +44,10 @@
 #include <ext/type_traits.h>
 #include <bits/move.h> // for std::__addressof
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wvolatile" // volatile parm/return
+#pragma GCC diagnostic ignored "-Wc++11-extensions"
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
 _GLIBCXX_BEGIN_NAMESPACE_VERSION
@@ -2282,4 +2286,5 @@ namespace tr1
 _GLIBCXX_END_NAMESPACE_VERSION
 }
 
+#pragma GCC diagnostic pop
 #endif // _GLIBCXX_TR1_FUNCTIONAL
diff --git a/libstdc++-v3/include/tr1/tuple b/libstdc++-v3/include/tr1/tuple
index be26d283f8c2..40e2d0915141 100644
--- a/libstdc++-v3/include/tr1/tuple
+++ b/libstdc++-v3/include/tr1/tuple
@@ -34,6 +34,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions"
+
 #include <bits/requires_hosted.h> // TR1
 
 #include <utility>
@@ -425,4 +428,5 @@ namespace tr1
 _GLIBCXX_END_NAMESPACE_VERSION
 }
 
+#pragma GCC diagnostic pop
 #endif // _GLIBCXX_TR1_TUPLE
diff --git a/libstdc++-v3/include/tr1/type_traits 
b/libstdc++-v3/include/tr1/type_traits
index f5714b0032cc..62b30e7d658c 100644
--- a/libstdc++-v3/include/tr1/type_traits
+++ b/libstdc++-v3/include/tr1/type_traits
@@ -31,6 +31,9 @@
 
 #pragma GCC system_header
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions"
+
 #include <bits/requires_hosted.h> // TR1
 
 #include <bits/c++config.h>
@@ -684,4 +687,5 @@ namespace tr1
 _GLIBCXX_END_NAMESPACE_VERSION
 }
 
+#pragma GCC diagnostic pop
 #endif // _GLIBCXX_TR1_TYPE_TRAITS
diff --git a/libstdc++-v3/libsupc++/compare b/libstdc++-v3/libsupc++/compare
index 63ad6b5c23e9..ac8ffdb6c5ab 100644
--- a/libstdc++-v3/libsupc++/compare
+++ b/libstdc++-v3/libsupc++/compare
@@ -39,6 +39,10 @@
 
 #include <concepts>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wpedantic" // __int128
+#pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
+
 namespace std _GLIBCXX_VISIBILITY(default)
 {
   // [cmp.categories], comparison category types
@@ -1258,6 +1262,8 @@ namespace std _GLIBCXX_VISIBILITY(default)
 #endif // __cpp_lib_three_way_comparison >= 201907L
 } // namespace std
 
+#pragma GCC diagnostic pop
+
 #endif // C++20
 
 #endif // _COMPARE
diff --git a/libstdc++-v3/libsupc++/new b/libstdc++-v3/libsupc++/new
index af5c7690bb99..b530bd1100df 100644
--- a/libstdc++-v3/libsupc++/new
+++ b/libstdc++-v3/libsupc++/new
@@ -46,6 +46,9 @@
 #define __glibcxx_want_constexpr_new
 #include <bits/version.h>
 
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wc++11-extensions" // scoped enum
+
 #pragma GCC visibility push(default)
 
 extern "C++" {
@@ -239,5 +242,6 @@ namespace std
 }
 
 #pragma GCC visibility pop
+#pragma GCC diagnostic pop
 
 #endif

Reply via email to