Add a #error directive to ensure that the definitions are not compiled
as C++17, which would prevent them being emitted.

libstdc++-v3/ChangeLog:

        PR libstdc++/98725
        * src/c++11/limits.cc: Fail if __cpp_inline_variables is
        defined.

Tested powerpc64le-linux. Committed to trunk.

commit e6f6972b5f4711c110fa753c926df49415f230da
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Fri Oct 8 14:45:23 2021

    libstdc++: Detect miscompilation of src/c++11/limits.cc
    
    Add a #error directive to ensure that the definitions are not compiled
    as C++17, which would prevent them being emitted.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/98725
            * src/c++11/limits.cc: Fail if __cpp_inline_variables is
            defined.

diff --git a/libstdc++-v3/src/c++11/limits.cc b/libstdc++-v3/src/c++11/limits.cc
index 21d4427f10b..585cb8c92db 100644
--- a/libstdc++-v3/src/c++11/limits.cc
+++ b/libstdc++-v3/src/c++11/limits.cc
@@ -29,6 +29,10 @@
 // 18.2.1
 //
 
+#if __cpp_inline_variables
+# error This file must be compiled as C++11 or C++14
+#endif
+
 #include <limits>
 
 namespace std _GLIBCXX_VISIBILITY(default)

Reply via email to