Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ This project partially comply with [Semantic Versioning][].

[Semantic Versioning]: https://semver.org/spec/v2.0.0.html

## Unreleased

- Fixed warnings for code using vatomic C++

## [2.4.0]

- Introduced vsync::atomic for C++ (vsync/atomic.hpp)
Expand Down
2 changes: 2 additions & 0 deletions include/vsync/atomic/core_bool.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) volatile noexcept
{
(void)failure;
vbool_t old = 0;
switch (order) {
case memory_order_release:
Expand Down Expand Up @@ -205,6 +206,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) noexcept
{
(void)failure;
vbool_t old = 0;
switch (order) {
case memory_order_release:
Expand Down
2 changes: 2 additions & 0 deletions include/vsync/atomic/core_ptr.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) volatile noexcept
{
(void)failure;
PTR *old = 0;
switch (order) {
case memory_order_release:
Expand Down Expand Up @@ -204,6 +205,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) noexcept
{
(void)failure;
PTR *old = 0;
switch (order) {
case memory_order_release:
Expand Down
2 changes: 2 additions & 0 deletions include/vsync/atomic/core_sz.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) volatile noexcept
{
(void)failure;
vsize_t old = 0;
switch (order) {
case memory_order_release:
Expand Down Expand Up @@ -201,6 +202,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) noexcept
{
(void)failure;
vsize_t old = 0;
switch (order) {
case memory_order_release:
Expand Down
2 changes: 2 additions & 0 deletions include/vsync/atomic/core_u16.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) volatile noexcept
{
(void)failure;
vuint16_t old = 0;
switch (order) {
case memory_order_release:
Expand Down Expand Up @@ -201,6 +202,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) noexcept
{
(void)failure;
vuint16_t old = 0;
switch (order) {
case memory_order_release:
Expand Down
2 changes: 2 additions & 0 deletions include/vsync/atomic/core_u32.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) volatile noexcept
{
(void)failure;
vuint32_t old = 0;
switch (order) {
case memory_order_release:
Expand Down Expand Up @@ -201,6 +202,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) noexcept
{
(void)failure;
vuint32_t old = 0;
switch (order) {
case memory_order_release:
Expand Down
2 changes: 2 additions & 0 deletions include/vsync/atomic/core_u64.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) volatile noexcept
{
(void)failure;
vuint64_t old = 0;
switch (order) {
case memory_order_release:
Expand Down Expand Up @@ -201,6 +202,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) noexcept
{
(void)failure;
vuint64_t old = 0;
switch (order) {
case memory_order_release:
Expand Down
2 changes: 2 additions & 0 deletions include/vsync/atomic/core_u8.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) volatile noexcept
{
(void)failure;
vuint8_t old = 0;
switch (order) {
case memory_order_release:
Expand Down Expand Up @@ -201,6 +202,7 @@ namespace vsync
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) noexcept
{
(void)failure;
vuint8_t old = 0;
switch (order) {
case memory_order_release:
Expand Down
11 changes: 10 additions & 1 deletion scripts/clang-format.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,22 @@ fi
if [ "${STYLE}" != "" ]; then
STYLE=":${STYLE}"
fi
if clang-format --version | grep -q "version 14\."; then
CLANG_FORMAT=clang-format
elif which clang-format-14 > /dev/null; then
# clang-format-14 is installed, use it instead!
CLANG_FORMAT=clang-format-14
else
echo "Warning: clang-format 14 not found!"
echo " The formatted code is likely to fail vatomic CICD pipeline"
fi

# Apply clang-format to all *.h and *.c files in src folder.
find "$@" \( -name '*.h' -o -name '*.c' -o -name '*.cpp' -o -name '*.hpp' -o -name '*.cxx' \) \
-not -path '*/build/*' \
-not -path '*/deps/*' \
-type f \
-exec clang-format -style=file${STYLE} -i {} +
-exec ${CLANG_FORMAT} -style=file${STYLE} -i {} +

if [ "${SILENT}" != "true" ]; then
# Display changed files and exit with 1 if there were differences.
Expand Down
1 change: 1 addition & 0 deletions template/cpp-atomic/unsigned_core_TY.hpp.in
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ _tmpl_begin(TY = [[u8; u16; u32; u64; sz; bool; ptr]], VL =[[VOL; NON_VOL]]);
memory_order order = memory_order_seq_cst,
memory_order failure = memory_order_seq_cst) MAP_VL noexcept
{
(void) failure;
Comment thread
db7 marked this conversation as resolved.
MAP_TMPL_T_TY old = 0;
switch (order) {
case memory_order_release:
Expand Down
1 change: 1 addition & 0 deletions test/atomics_cxx/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ file(GLOB TESTS *.cpp)
foreach(TEST ${TESTS})
get_filename_component(TEST_NAME ${TEST} NAME_WE)
add_executable(${TEST_NAME} ${TEST})
target_compile_options(${TEST_NAME} PRIVATE -Wall -Wextra -Werror)
target_link_libraries(${TEST_NAME} vatomic pthread)
v_add_bin_test(NAME ${TEST_NAME} COMMAND ${TEST_NAME})
endforeach()
2 changes: 1 addition & 1 deletion test/atomics_cxx/mt.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ template <typename TT, size_t N, size_t IT> class MT_Test
#ifdef USE_BARRIER
barrier.arrive_and_wait();
#endif
for (auto i = 0; i < IT; i++) {
for (size_t i = 0; i < IT; i++) {
f();
}
});
Expand Down
20 changes: 16 additions & 4 deletions test/atomics_cxx/ut_int_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,22 @@ template <typename TT, bool IsVolatile> struct TestAtomics {
for (int order = vsync::memory_order_relaxed;
order <= vsync::memory_order_seq_cst; order++) {
for (TT v : vals) {
mirror.store(v, static_cast<std::memory_order>(order));
subject.store(v, static_cast<vsync::memory_order>(order));
assert(mirror.load(static_cast<std::memory_order>(order)) ==
subject.load(static_cast<vsync::memory_order>(order)));
// We cannot have a load with mo_release or a store with
// mo_acquire. The compiler typically ignores that, downgrading
// the implicit barrier to mo_relaxed. However, if you set
// -pedanti, the compiler will complain. So, we perform this
// mapping manually.
auto w_order = order == vsync::memory_order_acquire ?

vsync::memory_order_relaxed :
order;
auto r_order = order == vsync::memory_order_release ?
vsync::memory_order_relaxed :
order;
mirror.store(v, static_cast<std::memory_order>(w_order));
subject.store(v, static_cast<vsync::memory_order>(w_order));
assert(mirror.load(static_cast<std::memory_order>(r_order)) ==
subject.load(static_cast<vsync::memory_order>(r_order)));
}
}
}
Expand Down
Loading