diff --git a/test/Makefile b/test/Makefile index 4375f0c..0c66c2b 100644 --- a/test/Makefile +++ b/test/Makefile @@ -74,7 +74,7 @@ TESTS_C_LINK_DLL = autoimport-main TESTS_C_NO_BUILTIN = crt-test TESTS_C_ANSI_STDIO = crt-test TESTS_C_AS_CPP = crt-test -TESTS_CPP = hello-cpp global-terminate tlstest-main longjmp-cleanup +TESTS_CPP = hello-cpp global-terminate tlstest-main longjmp-cleanup atomic-load-sizes TESTS_CPP_EXCEPTIONS = hello-exception exception-locale exception-reduced exception-catch-ptr-ref TESTS_CPP_STATIC = hello-exception TESTS_CPP_DLL = tlstest-lib throwcatch-lib diff --git a/test/atomic-load-sizes.cpp b/test/atomic-load-sizes.cpp new file mode 100644 index 0000000..fa24db0 --- /dev/null +++ b/test/atomic-load-sizes.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2026 Martin Storsjo + * + * This file is part of llvm-mingw. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include +#include +#include + +int retval = 0; + +template +void f() { + using type_t = std::array; + type_t init; + for (std::size_t i = 0; i < size; i++) + init[i] = i; + std::atomic atom(init); + bool match = atom.load() == init; + std::cout << size << " byte atomic: " << (match ? "ok\n" : "FAILED\n"); + if (!match) + retval = 1; + if constexpr (size < max_size) { + f(); + } +} + +int main() { + f<1, 32>(); + return retval; +}