<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in atomic</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>d64394b8 - [libc++] Always query the compiler to find whether a type is always lockfree</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#d64394b8</link>
        <description>[libc++] Always query the compiler to find whether a type is always lockfreeIn https://llvm.org/D56913, we added an emulation for the __atomic_always_lock_freecompiler builtin when compiling in Freestanding mode. However, the emulationdid (and could not) give exactly the same answer as the compiler builtin,which led to a potential ABI break for e.g. enum classes.After speaking to the original author of D56913, we agree that the correctbehavior is to instead always use the compiler builtin, since that providesa more accurate answer, and __atomic_always_lock_free is a purely front-endbuiltin which doesn&apos;t require any runtime support. Furthermore, it isavailable regardless of the Standard mode (see https://godbolt.org/z/cazf3ssYY).However, this patch does constitute an ABI break. As shown by https://godbolt.org/z/1eoex6zdK:- In LLVM &lt;= 11.0.1, an atomic&lt;enum class with 1 byte&gt; would not contain a lock byte.- In LLVM &gt;= 12.0.0, an atomic&lt;enum class with 1 byte&gt; would contain a lock byte.This patch breaks the ABI again to bring it back to 1 byte, which seemslike the correct thing to do.Fixes #57440Differential Revision: https://reviews.llvm.org/D133377(cherry picked from commit f1a601fe88f99d52ca80617266897b217bcd4d64)

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Tue, 06 Sep 2022 21:07:18 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>1544d1f9 - [libc++] Undeprecate ATOMIC_FLAG_INIT (LWG3659)</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#1544d1f9</link>
        <description>[libc++] Undeprecate ATOMIC_FLAG_INIT (LWG3659)According to @aaron.ballman this was marked Tentatively Ready as of 2022-07-07.D129362 implemented the C counterpart.Reviewed By: ldionne, #libc, MordanteDifferential Revision: https://reviews.llvm.org/D129380

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Fri, 08 Jul 2022 16:38:22 +0000</pubDate>
        <dc:creator>Raul Tambre &lt;raul.tambre@clevon.com&gt;</dc:creator>
    </item>
<item>
        <title>b48c5010 - [libc++] Make parameter names consistent and enforce the naming style using readability-identifier-naming</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#b48c5010</link>
        <description>[libc++] Make parameter names consistent and enforce the naming style using readability-identifier-namingEnsure that parameter names have the style `__lower_case`Reviewed By: ldionne, #libcSpies: aheejin, sstefan1, libcxx-commits, miyukiDifferential Revision: https://reviews.llvm.org/D129051

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Fri, 08 Jul 2022 16:17:26 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>de4a57cb - [libc++] Re-add transitive includes that had been removed since LLVM 14</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#de4a57cb</link>
        <description>[libc++] Re-add transitive includes that had been removed since LLVM 14This commit re-adds transitive includes that had been removed by4cd04d1687f1, c36870c8e79c, a83f4b9cda57, 1458458b558d, 2e2f3158c604,and 489637e66dd3. This should cover almost all the includes that hadbeen removed since LLVM 14 and that would contribute to breaking usercode when releasing LLVM 15.It is possible to disable the inclusion of these headers by defining_LIBCPP_REMOVE_TRANSITIVE_INCLUDES. The intent is that vendors willenable that macro and start fixing downstream issues immediately. Wecan then remove the macro (and the transitive includes) by default ina future release. That way, we will break users only once by removingtransitive includes in bulk instead of doing it bit by bit a everyrelease, which is more disruptive for users.Note 1: The set of headers to re-add was found by re-generating the        transitive include test on a checkout of release/14.x, which        provided the list of all transitive includes we used to provide.Note 2: Several includes of &lt;vector&gt;, &lt;optional&gt;, &lt;array&gt; and &lt;unordered_map&gt;        have been added in this commit. These transitive inclusions were        added when we implemented boyer_moore_searcher in &lt;functional&gt;.Note 3: This is a best effort patch to try and resolve downstream breakage        caused since branching LLVM 14. I wasn&apos;t able to perfectly mirror        transitive includes in LLVM 14 for a few headers, so I added a        release note explaining it. To summarize, adding boyer_moore_searcher        created a bunch of circular dependencies, so we have to break        backwards compatibility in a few cases.Differential Revision: https://reviews.llvm.org/D128661

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Mon, 27 Jun 2022 19:53:41 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>39328a65 - [libcxx] Switch __cxx_contention_t to int32_t on 32 bit AIX</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#39328a65</link>
        <description>[libcxx] Switch __cxx_contention_t to int32_t on 32 bit AIXI guess this is an ABI break for the 32 bit AIX configuration, but I&apos;mnot sure if that one is meant to be ABI stable yet or not.Previously, this used int32_t for this type on linux, but int64_ton all other platforms. This was added in D68480 /54fa9ecd3088508b05b0c5b5cb52da8a3c188655, but I don&apos;t really seeany discussion around this detail there.Switching this to 32 bit on 32 bit AIX silences these libcxx buildwarnings:```In file included from /scratch/powerllvm/cpap8006/llvm-project/libcxx-ci/libcxx/src/atomic.cpp:12:/scratch/powerllvm/cpap8006/llvm-project/libcxx-ci/build/aix/include/c++/v1/atomic:1005:12: warning: large atomic operation may incur significant performance penalty; the access size (8 bytes) exceeds the max lock-free size (4  bytes) [-Watomic-alignment]    return __c11_atomic_fetch_add(&amp;__a-&gt;__a_value, __delta, static_cast&lt;__memory_order_underlying_t&gt;(__order));           ^/scratch/powerllvm/cpap8006/llvm-project/libcxx-ci/build/aix/include/c++/v1/atomic:948:12: warning: large atomic operation may incur significant performance penalty; the access size (8 bytes) exceeds the max lock-free size (4  bytes) [-Watomic-alignment]    return __c11_atomic_load(const_cast&lt;__ptr_type&gt;(&amp;__a-&gt;__a_value), static_cast&lt;__memory_order_underlying_t&gt;(__order));           ^/scratch/powerllvm/cpap8006/llvm-project/libcxx-ci/build/aix/include/c++/v1/atomic:1000:12: warning: large atomic operation may incur significant performance penalty; the access size (8 bytes) exceeds the max lock-free size (4  bytes) [-Watomic-alignment]    return __c11_atomic_fetch_add(&amp;__a-&gt;__a_value, __delta, static_cast&lt;__memory_order_underlying_t&gt;(__order));           ^/scratch/powerllvm/cpap8006/llvm-project/libcxx-ci/build/aix/include/c++/v1/atomic:1022:12: warning: large atomic operation may incur significant performance penalty; the access size (8 bytes) exceeds the max lock-free size (4  bytes) [-Watomic-alignment]    return __c11_atomic_fetch_sub(&amp;__a-&gt;__a_value, __delta, static_cast&lt;__memory_order_underlying_t&gt;(__order));           ^4 warnings generated.```Differential Revision: https://reviews.llvm.org/D124519

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Wed, 27 Apr 2022 10:28:01 +0000</pubDate>
        <dc:creator>Martin Storsj&#246; &lt;martin@martin.st&gt;</dc:creator>
    </item>
<item>
        <title>586efd52 - [libc++][P0943] Add stdatomic.h header.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#586efd52</link>
        <description>[libc++][P0943] Add stdatomic.h header.* https://wg21.link/P0943* https://eel.is/c++draft/stdatomic.h.synThis is a re-application of 5d1c1a24, which was reverted in 987c7f407because it broke the LLDB build.Co-authored-by: Marek Kurdej &lt;marek.kurdej@gmail.com&gt;Differential Revision: https://reviews.llvm.org/D97044

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Mon, 11 Apr 2022 14:42:45 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>385cc25a - [libc++] Ensure that all public C++ headers include &lt;__assert&gt;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#385cc25a</link>
        <description>[libc++] Ensure that all public C++ headers include &lt;__assert&gt;This patch changes the requirement for getting the declaration of theassertion handler from including &lt;__assert&gt; to including any publicC++ header of the library. Note that C compatibility headers areexcluded because we don&apos;t implement all the C headers ourselves --some of them are taken straight from the C library, like assert.h.It also adds a generated test to check it. Furthermore, this newgenerated test is designed in a way that will make it possible toreplace almost all the existing test-generation scripts with thissystem in upcoming patches.Differential Revision: https://reviews.llvm.org/D122506

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Fri, 25 Mar 2022 16:55:36 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>489637e6 - [libc++] Granularize chrono includes</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#489637e6</link>
        <description>[libc++] Granularize chrono includesReviewed By: Quuxplusone, #libcSpies: libcxx-commitsDifferential Revision: https://reviews.llvm.org/D120141

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Wed, 23 Feb 2022 22:05:22 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>318507ed - [libc++] Remove a few unneeded _LIBCPP_CXX03_LANG ifdefs</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#318507ed</link>
        <description>[libc++] Remove a few unneeded _LIBCPP_CXX03_LANG ifdefsReviewed By: Quuxplusone, ldionne, #libcSpies: libcxx-commitsDifferential Revision: https://reviews.llvm.org/D119896

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Wed, 16 Feb 2022 17:55:43 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>987c7f40 - [libc++] Revert &lt;stdatomic.h&gt; changes</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#987c7f40</link>
        <description>[libc++] Revert &lt;stdatomic.h&gt; changesThis reverts commits a30a7948d and 5d1c1a243, which broke the LLDBdata formatters tests because they build with modules in C++11 mode.Differential Revision: https://reviews.llvm.org/D97044

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Tue, 15 Feb 2022 17:57:12 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>5d1c1a24 - [libc++] [C++2b] [P0943] Add stdatomic.h header.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#5d1c1a24</link>
        <description>[libc++] [C++2b] [P0943] Add stdatomic.h header.* https://wg21.link/P0943* https://eel.is/c++draft/stdatomic.h.synDifferential Revision: https://reviews.llvm.org/D97044

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Mon, 07 Feb 2022 21:04:31 +0000</pubDate>
        <dc:creator>Marek Kurdej &lt;marek.kurdej@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>fa6b9e40 - [libc++] Normalize all our &apos;#pragma GCC system_header&apos;, and regression-test.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#fa6b9e40</link>
        <description>[libc++] Normalize all our &apos;#pragma GCC system_header&apos;, and regression-test.Now we&apos;ll notice if a header forgets to include this magic phrase.Differential Revision: https://reviews.llvm.org/D118800

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Wed, 02 Feb 2022 01:16:40 +0000</pubDate>
        <dc:creator>Arthur O&apos;Dwyer &lt;arthur.j.odwyer@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>d5ab243c - Omit atomic_{,un}signed_lock_free if unsupported</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#d5ab243c</link>
        <description>Omit atomic_{,un}signed_lock_free if unsupportedOn targets that have limited atomic support, e.g. ones that defineATOMIC_*_LOCK_FREE to &apos;1&apos; (&quot;sometimes lock free&quot;), we would end upreferencing yet-undefined __libcpp_{,un}signed_lock_free.This commit adds a guard to prevent these references for suchtargets.Differential Revision: https://reviews.llvm.org/D118391

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Thu, 27 Jan 2022 16:09:11 +0000</pubDate>
        <dc:creator>Brian Cain &lt;bcain@quicinc.com&gt;</dc:creator>
    </item>
<item>
        <title>df51be85 - [libc++] Split a few utilities out of __threading_support</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#df51be85</link>
        <description>[libc++] Split a few utilities out of __threading_supportThis change is the basis for a further refactoring where I&apos;m going tosplit up the various implementations we have in __threading_support tomake that code easier to understand.Note that I had to make __convert_to_timespec a template to breakcircular dependencies. Concretely, we never seem to use it with anythingother than ::timespec, but I am wary of hardcoding that assumption aspart of this change, since I suspect there&apos;s a reason for going throughthese hoops in the first place.Differential Revision: https://reviews.llvm.org/D116944

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Mon, 10 Jan 2022 14:43:29 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>4e730aeb - [libcxx] Add deprecation notices to macros deprecated in P0883R2</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#4e730aeb</link>
        <description>[libcxx] Add deprecation notices to macros deprecated in P0883R2When P0883R2 was initially implemented in D103769 #pragma clang deprecated didn&apos;t exist yet.We also forgot to cleanup usages in libc++ itself.This takes care of both.Differential Revision: https://reviews.llvm.org/D115995

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Sat, 18 Dec 2021 20:19:37 +0000</pubDate>
        <dc:creator>Raul Tambre &lt;raul@tambre.ee&gt;</dc:creator>
    </item>
<item>
        <title>4955095f - [libc++] Remove _LIBCPP_DEFAULT</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#4955095f</link>
        <description>[libc++] Remove _LIBCPP_DEFAULTclang has `= default` as an extension in c++03, so just use it.Reviewed By: ldionne, Quuxplusone, #libcSpies: libcxx-commitsDifferential Revision: https://reviews.llvm.org/D115275

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Tue, 07 Dec 2021 19:29:35 +0000</pubDate>
        <dc:creator>Nikolas Klauser &lt;nikolasklauser@berlin.de&gt;</dc:creator>
    </item>
<item>
        <title>92832e48 - [libc++] Enable &lt;atomic&gt; when threads are disabled</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#92832e48</link>
        <description>[libc++] Enable &lt;atomic&gt; when threads are disabledstd::atomic is, for the most part, just a thin veneer on top of compilerbuiltins. Hence, it should be available even when threads are not availableon the system, and in fact there has been requests for such support.This patch:- Moves __libcpp_thread_poll_with_backoff to its own header so it can  be used in &lt;atomic&gt; when threads are disabled.- Adds a dummy backoff policy for atomic polling that doesn&apos;t know about  threads.- Adjusts the &lt;atomic&gt; feature-test macros so they are provided even when  threads are disabled.- Runs the &lt;atomic&gt; tests when threads are disabled.rdar://77873569Differential Revision: https://reviews.llvm.org/D114109

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Wed, 17 Nov 2021 15:59:31 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>eb8650a7 - [runtimes][NFC] Remove filenames at the top of the license notice</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#eb8650a7</link>
        <description>[runtimes][NFC] Remove filenames at the top of the license noticeWe&apos;ve stopped doing it in libc++ for a while now because these nameswould end up rotting as we move things around and copy/paste stuff.This cleans up all the existing files so as to stop the spreadingas people copy-paste headers around.

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Wed, 17 Nov 2021 21:25:01 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>3e957e5d - [libc++] Refactor tests for trivially copyable atomics</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#3e957e5d</link>
        <description>[libc++] Refactor tests for trivially copyable atomics- Replace irrelevant synopsis by a comment- Use a .verify.cpp test instead of .compile.fail.cpp- Remove unnecessary includes in one of the tests (was a copy-paste error)Differential Revision: https://reviews.llvm.org/D114094

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Wed, 17 Nov 2021 16:09:55 +0000</pubDate>
        <dc:creator>Louis Dionne &lt;ldionne.2@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>a76e6987 - [libc++] Update atomic synopsis and tests.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/libcxx/include/atomic#a76e6987</link>
        <description>[libc++] Update atomic synopsis and tests.While looking at LWG-2988 and P0558 it seems the issues were alreadyimplemented, but the synopsis wasn&apos;t updated. Some of the tests didn&apos;tvalidate the `noexcept` status. A few tests were missing completely:- `atomic_wait_explicit`- `atomic_notify_one`- `atomic_notify_all`Mark P0558 as complete, didn&apos;t investigate which version of libc++ firstincludes this. It seems the paper has been retroactively applied. Icouldn&apos;t find whether this is correct, but looking at cppreference itseems intended.Completes- LWG-2988 Clause 32 cleanup missed one typename- P0558 Resolving atomic&lt;T&gt; named base class inconsistenciesReviewed By: #libc, ldionneDifferential Revision: https://reviews.llvm.org/D103765

            List of files:
            /llvm-project-15.0.7/libcxx/include/atomic</description>
        <pubDate>Sun, 06 Jun 2021 12:48:08 +0000</pubDate>
        <dc:creator>Mark de Wever &lt;koraq@xs4all.nl&gt;</dc:creator>
    </item>
</channel>
</rss>
