A simple atomic operation sample :
a.c:
#include <stdio.h>
void main() {
unsigned value = 0;
unsigned ret = __atomic_fetch_add(&value, 1, 5);
printf("Test: ret=%u, value=%u → %s\n",
ret, value,
(ret == 0 && value == 1) ? "Pass" : "Fail");
}
compile with TCC under arm linux.
If just compile without `libatomic.a`,
tcc a.c -o a
It will finish with `Pass`:
$ ./a
Test: ret=0, value=1 → Pass
If compile with `libatomic.a`,
tcc a.c -o a "/usr/lib/gcc/aarch64-linux-gnu/9/libatomic.a"
It will finish with `Fail`:
$ ./a
Test: ret=4262792, value=0 → Fail
[email protected]
_______________________________________________
Tinycc-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/tinycc-devel