You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The problem seems to be that the atomic headers lead to the fact that in
the end the compiler intrinsic
__atomic_compare_exchange
is called for the 16 byte case. Unfortunately, I cannot easily find the
source code for this. In any case this function seems to misbehave
for the 16 byte case. I have traced the assembler code and this shows
the wrong behaviour.
The text was updated successfully, but these errors were encountered:
huixie90
changed the title
std::atomic<long double>::compare_exchange_weak does not update expected on failurestd::atomic<long double>::compare_exchange_weak does not update expected on failure
Oct 9, 2023
Extended Description
This program does not behave as intended:
I compile with
The output is:
My version of clang++-12 is:
The same problem occurs with clang++11 and other optimization levels.
The problem is that
does not update
expected
as specified when the expected value is notfound.
Here are the libraries my program is linked against:
The problem seems to be that the atomic headers lead to the fact that in
the end the compiler intrinsic
is called for the 16 byte case. Unfortunately, I cannot easily find the
source code for this. In any case this function seems to misbehave
for the 16 byte case. I have traced the assembler code and this shows
the wrong behaviour.
The text was updated successfully, but these errors were encountered: