Skip to content

Commit dedc515

Browse files
authored
[libc++] Avoid including <string> in <mutex> (#116254)
1 parent adb80d8 commit dedc515

File tree

15 files changed

+39
-96
lines changed

15 files changed

+39
-96
lines changed

libcxx/include/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,7 @@ set(files
718718
__system_error/error_code.h
719719
__system_error/error_condition.h
720720
__system_error/system_error.h
721+
__system_error/throw_system_error.h
721722
__thread/formatter.h
722723
__thread/id.h
723724
__thread/jthread.h

libcxx/include/__condition_variable/condition_variable.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
#include <__config>
1717
#include <__mutex/mutex.h>
1818
#include <__mutex/unique_lock.h>
19-
#include <__system_error/system_error.h>
19+
#include <__system_error/throw_system_error.h>
2020
#include <__thread/support.h>
2121
#include <__type_traits/enable_if.h>
2222
#include <__type_traits/is_floating_point.h>

libcxx/include/__mutex/unique_lock.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#include <__config>
1515
#include <__memory/addressof.h>
1616
#include <__mutex/tag_types.h>
17-
#include <__system_error/system_error.h>
17+
#include <__system_error/throw_system_error.h>
1818
#include <__utility/swap.h>
1919
#include <cerrno>
2020

libcxx/include/__system_error/system_error.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ class _LIBCPP_EXPORTED_FROM_ABI system_error : public runtime_error {
3939
_LIBCPP_HIDE_FROM_ABI const error_code& code() const _NOEXCEPT { return __ec_; }
4040
};
4141

42-
[[__noreturn__]] _LIBCPP_EXPORTED_FROM_ABI void __throw_system_error(int __ev, const char* __what_arg);
4342
[[__noreturn__]] _LIBCPP_HIDE_FROM_ABI inline void __throw_system_error(error_code __ec, const char* __what_arg) {
4443
#if _LIBCPP_HAS_EXCEPTIONS
4544
throw system_error(__ec, __what_arg);
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// -*- C++ -*-
2+
//===----------------------------------------------------------------------===//
3+
//
4+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5+
// See https://llvm.org/LICENSE.txt for license information.
6+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7+
//
8+
//===----------------------------------------------------------------------===//
9+
10+
#ifndef _LIBCPP___SYSTEM_ERROR_THROW_SYSTEM_ERROR_H
11+
#define _LIBCPP___SYSTEM_ERROR_THROW_SYSTEM_ERROR_H
12+
13+
#include <__config>
14+
15+
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
16+
# pragma GCC system_header
17+
#endif
18+
19+
_LIBCPP_BEGIN_NAMESPACE_STD
20+
21+
[[__noreturn__]] _LIBCPP_EXPORTED_FROM_ABI void __throw_system_error(int __ev, const char* __what_arg);
22+
23+
_LIBCPP_END_NAMESPACE_STD
24+
25+
#endif // _LIBCPP___SYSTEM_ERROR_THROW_SYSTEM_ERROR_H

libcxx/include/__thread/thread.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,13 @@
1818
#include <__functional/unary_function.h>
1919
#include <__memory/unique_ptr.h>
2020
#include <__mutex/mutex.h>
21-
#include <__system_error/system_error.h>
21+
#include <__system_error/throw_system_error.h>
2222
#include <__thread/id.h>
2323
#include <__thread/support.h>
2424
#include <__type_traits/decay.h>
25+
#include <__type_traits/enable_if.h>
26+
#include <__type_traits/is_same.h>
27+
#include <__type_traits/remove_cvref.h>
2528
#include <__utility/forward.h>
2629
#include <tuple>
2730

libcxx/include/module.modulemap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1924,6 +1924,7 @@ module std [system] {
19241924
}
19251925
module error_condition { header "__system_error/error_condition.h" }
19261926
module system_error { header "__system_error/system_error.h" }
1927+
module throw_system_error { header "__system_error/throw_system_error.h" }
19271928

19281929
header "system_error"
19291930
export *

libcxx/include/print

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ namespace std {
3636
#include <__assert>
3737
#include <__concepts/same_as.h>
3838
#include <__config>
39-
#include <__system_error/system_error.h>
39+
#include <__system_error/throw_system_error.h>
4040
#include <__utility/forward.h>
4141
#include <cerrno>
4242
#include <cstdio>

libcxx/include/shared_mutex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ template <class Mutex>
134134
# include <__mutex/mutex.h>
135135
# include <__mutex/tag_types.h>
136136
# include <__mutex/unique_lock.h>
137-
# include <__system_error/system_error.h>
137+
# include <__system_error/throw_system_error.h>
138138
# include <__utility/swap.h>
139139
# include <cerrno>
140140
# include <version>

libcxx/src/chrono.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
# define _LARGE_TIME_API
1313
#endif
1414

15-
#include <__system_error/system_error.h>
15+
#include <__system_error/throw_system_error.h>
1616
#include <cerrno> // errno
1717
#include <chrono>
1818

libcxx/src/filesystem/filesystem_clock.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
#include <__config>
10+
#include <__system_error/throw_system_error.h>
1011
#include <chrono>
1112
#include <filesystem>
1213
#include <time.h>

libcxx/src/random.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
# define _CRT_RAND_S
1414
#endif // defined(_LIBCPP_USING_WIN32_RANDOM)
1515

16-
#include <__system_error/system_error.h>
16+
#include <__system_error/throw_system_error.h>
1717
#include <limits>
1818
#include <random>
1919

libcxx/src/system_error.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
#include <__assert>
1010
#include <__config>
11+
#include <__system_error/throw_system_error.h>
1112
#include <__verbose_abort>
1213
#include <cerrno>
1314
#include <cstdio>

libcxx/test/libcxx/transitive_includes/cxx23.csv

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -199,25 +199,15 @@ complex typeinfo
199199
complex version
200200
concepts version
201201
condition_variable atomic
202-
condition_variable cctype
203202
condition_variable cerrno
204203
condition_variable climits
205-
condition_variable compare
206204
condition_variable cstdint
207-
condition_variable cstdio
208205
condition_variable cstring
209206
condition_variable ctime
210-
condition_variable cwchar
211-
condition_variable cwctype
212207
condition_variable initializer_list
213-
condition_variable iosfwd
214208
condition_variable limits
215209
condition_variable new
216210
condition_variable ratio
217-
condition_variable stdexcept
218-
condition_variable string
219-
condition_variable string_view
220-
condition_variable tuple
221211
condition_variable typeinfo
222212
condition_variable version
223213
coroutine compare
@@ -699,46 +689,25 @@ memory new
699689
memory tuple
700690
memory typeinfo
701691
memory version
702-
memory_resource cctype
703692
memory_resource cerrno
704693
memory_resource climits
705694
memory_resource compare
706695
memory_resource cstdint
707-
memory_resource cstdio
708-
memory_resource cstring
709696
memory_resource ctime
710-
memory_resource cwchar
711-
memory_resource cwctype
712-
memory_resource initializer_list
713-
memory_resource iosfwd
714697
memory_resource limits
715698
memory_resource mutex
716699
memory_resource new
717700
memory_resource ratio
718-
memory_resource stdexcept
719-
memory_resource string
720-
memory_resource string_view
721701
memory_resource tuple
722702
memory_resource typeinfo
723703
memory_resource version
724-
mutex cctype
725704
mutex cerrno
726705
mutex climits
727706
mutex compare
728707
mutex cstdint
729-
mutex cstdio
730-
mutex cstring
731708
mutex ctime
732-
mutex cwchar
733-
mutex cwctype
734-
mutex initializer_list
735-
mutex iosfwd
736709
mutex limits
737-
mutex new
738710
mutex ratio
739-
mutex stdexcept
740-
mutex string
741-
mutex string_view
742711
mutex tuple
743712
mutex typeinfo
744713
mutex version
@@ -941,25 +910,12 @@ set new
941910
set optional
942911
set tuple
943912
set version
944-
shared_mutex cctype
945913
shared_mutex cerrno
946914
shared_mutex climits
947-
shared_mutex compare
948915
shared_mutex cstdint
949-
shared_mutex cstdio
950-
shared_mutex cstring
951916
shared_mutex ctime
952-
shared_mutex cwchar
953-
shared_mutex cwctype
954-
shared_mutex initializer_list
955-
shared_mutex iosfwd
956917
shared_mutex limits
957-
shared_mutex new
958918
shared_mutex ratio
959-
shared_mutex stdexcept
960-
shared_mutex string
961-
shared_mutex string_view
962-
shared_mutex tuple
963919
shared_mutex version
964920
source_location cstdint
965921
source_location version

libcxx/test/libcxx/transitive_includes/cxx26.csv

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -199,25 +199,15 @@ complex typeinfo
199199
complex version
200200
concepts version
201201
condition_variable atomic
202-
condition_variable cctype
203202
condition_variable cerrno
204203
condition_variable climits
205-
condition_variable compare
206204
condition_variable cstdint
207-
condition_variable cstdio
208205
condition_variable cstring
209206
condition_variable ctime
210-
condition_variable cwchar
211-
condition_variable cwctype
212207
condition_variable initializer_list
213-
condition_variable iosfwd
214208
condition_variable limits
215209
condition_variable new
216210
condition_variable ratio
217-
condition_variable stdexcept
218-
condition_variable string
219-
condition_variable string_view
220-
condition_variable tuple
221211
condition_variable typeinfo
222212
condition_variable version
223213
coroutine compare
@@ -698,46 +688,25 @@ memory new
698688
memory tuple
699689
memory typeinfo
700690
memory version
701-
memory_resource cctype
702691
memory_resource cerrno
703692
memory_resource climits
704693
memory_resource compare
705694
memory_resource cstdint
706-
memory_resource cstdio
707-
memory_resource cstring
708695
memory_resource ctime
709-
memory_resource cwchar
710-
memory_resource cwctype
711-
memory_resource initializer_list
712-
memory_resource iosfwd
713696
memory_resource limits
714697
memory_resource mutex
715698
memory_resource new
716699
memory_resource ratio
717-
memory_resource stdexcept
718-
memory_resource string
719-
memory_resource string_view
720700
memory_resource tuple
721701
memory_resource typeinfo
722702
memory_resource version
723-
mutex cctype
724703
mutex cerrno
725704
mutex climits
726705
mutex compare
727706
mutex cstdint
728-
mutex cstdio
729-
mutex cstring
730707
mutex ctime
731-
mutex cwchar
732-
mutex cwctype
733-
mutex initializer_list
734-
mutex iosfwd
735708
mutex limits
736-
mutex new
737709
mutex ratio
738-
mutex stdexcept
739-
mutex string
740-
mutex string_view
741710
mutex tuple
742711
mutex typeinfo
743712
mutex version
@@ -940,25 +909,12 @@ set new
940909
set optional
941910
set tuple
942911
set version
943-
shared_mutex cctype
944912
shared_mutex cerrno
945913
shared_mutex climits
946-
shared_mutex compare
947914
shared_mutex cstdint
948-
shared_mutex cstdio
949-
shared_mutex cstring
950915
shared_mutex ctime
951-
shared_mutex cwchar
952-
shared_mutex cwctype
953-
shared_mutex initializer_list
954-
shared_mutex iosfwd
955916
shared_mutex limits
956-
shared_mutex new
957917
shared_mutex ratio
958-
shared_mutex stdexcept
959-
shared_mutex string
960-
shared_mutex string_view
961-
shared_mutex tuple
962918
shared_mutex version
963919
source_location cstdint
964920
source_location version

0 commit comments

Comments
 (0)