| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[libc++] Make std::lock_guard available with _LIBCPP_HAS_NO_THREADS (#98717) This change makes std::lock_guard available when _LIBCPP_HAS_NO_THREADS is set. This class is generic and doesn't require threading support, and is regularly used even in environments where threading isn't available like embedded. fixes #89891 --------- Co-authored-by: Louis Dionne <ldionne.2@gmail.com> | 2 年前 | |
[libc++][NFC] Merge is{,_nothrow,_trivially}{,_copy,_move,_default}{_assignable,_constructible} (#85308) These headers have become very small by using compiler builtins, often containing only two declarations. This merges these headers, since there doesn't seem to be much of a benefit keeping them separate. Specifically, is_{,_nothrow,_trivially}{assignable,constructible} are kept and the copy, move and default versions of these type traits are moved in to the respective headers. | 2 年前 | |
[libc++] Fix missing and incorrect push/pop macros (#79204) We recently noticed that the unwrap_iter.h file was pushing macros, but it was pushing them again instead of popping them at the end of the file. This led to libc++ basically swallowing any custom definition of these macros in user code: #define min HELLO #include <algorithm> // min is not HELLO anymore, it's not defined While investigating this issue, I noticed that our push/pop pragmas were actually entirely wrong too. Indeed, instead of pushing macros like move, we'd push move(int, int) in the pragma, which is not a valid macro name. As a result, we would not actually push macros like move -- instead we'd simply undefine them. This led to the following code not working: #define move HELLO #include <algorithm> // move is not HELLO anymore Fixing the pragma push/pop incantations led to a cascade of issues because we use identifiers like move in a large number of places, and all of these headers would now need to do the push/pop dance. This patch fixes all these issues. First, it adds a check that we don't swallow important names like min, max, move or refresh as explained above. This is done by augmenting the existing system_reserved_names.gen.py test to also check that the macros are what we expect after including each header. Second, it fixes the push/pop pragmas to work properly and adds missing pragmas to all the files I could detect a failure in via the newly added test. rdar://121365472 | 2 年前 | |
[libc++] Make std::lock_guard available with _LIBCPP_HAS_NO_THREADS (#98717) This change makes std::lock_guard available when _LIBCPP_HAS_NO_THREADS is set. This class is generic and doesn't require threading support, and is regularly used even in environments where threading isn't available like embedded. fixes #89891 --------- Co-authored-by: Louis Dionne <ldionne.2@gmail.com> | 2 年前 | |
| 2 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 | ||
| 2 年前 |