diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2022-01-20 11:18:34 +0000 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2022-01-20 12:29:29 +0000 |
commit | 109f8af3d3c5424f103ceef5d77f5a447fb931ce (patch) | |
tree | 633065fdd23980414e253b86cc8f3a8265b86bd7 /libstdc++-v3/src | |
parent | 5929f253fcdbf24fd47706dd11aafdeac5e9ecb6 (diff) | |
download | gcc-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.cc | 4 | ||||
-rw-r--r-- | libstdc++-v3/src/c++11/future.cc | 4 | ||||
-rw-r--r-- | libstdc++-v3/src/c++11/system_error.cc | 4 | ||||
-rw-r--r-- | libstdc++-v3/src/c++17/memory_resource.cc | 4 |
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 |