aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/src
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2022-01-20 11:18:34 +0000
committerJonathan Wakely <jwakely@redhat.com>2022-01-20 12:29:29 +0000
commit109f8af3d3c5424f103ceef5d77f5a447fb931ce (patch)
tree633065fdd23980414e253b86cc8f3a8265b86bd7 /libstdc++-v3/src
parent5929f253fcdbf24fd47706dd11aafdeac5e9ecb6 (diff)
downloadgcc-109f8af3d3c5424f103ceef5d77f5a447fb931ce.zip
gcc-109f8af3d3c5424f103ceef5d77f5a447fb931ce.tar.gz
gcc-109f8af3d3c5424f103ceef5d77f5a447fb931ce.tar.bz2
libstdc++: Use Clang attribute instead of __constinit
Clang doesn't support the __constinit extension that we use pre-C++20, but it does have its own equivalent attribute that can be used instead. This makes it a little easier to use Clang to build libstdc++ (which isn't supported. but is sometimes attempted for esoteric targets). libstdc++-v3/ChangeLog: * src/c++11/cxx11-ios_failure.cc (__constinit): Define as equivalent attribute for Clang. * src/c++11/future.cc (__constinit): Likewise. * src/c++11/system_error.cc (__constinit): Likewise. * src/c++17/memory_resource.cc (__constinit): Likewise.
Diffstat (limited to 'libstdc++-v3/src')
-rw-r--r--libstdc++-v3/src/c++11/cxx11-ios_failure.cc4
-rw-r--r--libstdc++-v3/src/c++11/future.cc4
-rw-r--r--libstdc++-v3/src/c++11/system_error.cc4
-rw-r--r--libstdc++-v3/src/c++17/memory_resource.cc4
4 files changed, 16 insertions, 0 deletions
diff --git a/libstdc++-v3/src/c++11/cxx11-ios_failure.cc b/libstdc++-v3/src/c++11/cxx11-ios_failure.cc
index ba4b141..14a7f9c 100644
--- a/libstdc++-v3/src/c++11/cxx11-ios_failure.cc
+++ b/libstdc++-v3/src/c++11/cxx11-ios_failure.cc
@@ -42,6 +42,10 @@
# error This file should not be compiled for this configuration.
#endif
+#if __has_cpp_attribute(clang::require_constant_initialization)
+# define __constinit [[clang::require_constant_initialization]]
+#endif
+
namespace
{
struct io_error_category final : std::error_category
diff --git a/libstdc++-v3/src/c++11/future.cc b/libstdc++-v3/src/c++11/future.cc
index 488ff17..c52c057 100644
--- a/libstdc++-v3/src/c++11/future.cc
+++ b/libstdc++-v3/src/c++11/future.cc
@@ -25,6 +25,10 @@
#include <future>
#include <bits/functexcept.h>
+#if __has_cpp_attribute(clang::require_constant_initialization)
+# define __constinit [[clang::require_constant_initialization]]
+#endif
+
namespace
{
struct future_error_category final : public std::error_category
diff --git a/libstdc++-v3/src/c++11/system_error.cc b/libstdc++-v3/src/c++11/system_error.cc
index 789f2b4..7b1a5a2 100644
--- a/libstdc++-v3/src/c++11/system_error.cc
+++ b/libstdc++-v3/src/c++11/system_error.cc
@@ -37,6 +37,10 @@
#include <windows.h>
#endif
+#if __has_cpp_attribute(clang::require_constant_initialization)
+# define __constinit [[clang::require_constant_initialization]]
+#endif
+
namespace
{
using std::string;
diff --git a/libstdc++-v3/src/c++17/memory_resource.cc b/libstdc++-v3/src/c++17/memory_resource.cc
index 5cdb35d..bb6334c 100644
--- a/libstdc++-v3/src/c++17/memory_resource.cc
+++ b/libstdc++-v3/src/c++17/memory_resource.cc
@@ -32,6 +32,10 @@
# include <bits/move.h> // std::__exchange
#endif
+#if __has_cpp_attribute(clang::require_constant_initialization)
+# define __constinit [[clang::require_constant_initialization]]
+#endif
+
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION