Hi All,
We are trying to override the compiler atomic builtin functions like
int __sync_val_compare_and_swap( int *p,int x ,int y)
{
return *p; //ignore the function semantics here
}
int main()
{
int x = 0, y = 1;
y = __sync_val_compare_and_swap(&x, x, y);
return x + y;
}
clang throws the error like
test.c:1:6: error: cannot redeclare builtin function ‘__sync_val_compare_and_swap’
int __sync_val_compare_and_swap( int *p,int x ,int y)
^
test.c:1:6: note: ‘__sync_val_compare_and_swap’ is a builtin with type ‘void ()’
test.c:1:6: error: definition of builtin function ‘__sync_val_compare_and_swap’
int __sync_val_compare_and_swap( int *p,int x ,int y)
But GCC compiles it and we think that GCC is right here unlike clang.
We would like to hear from the community view on this.
Thank you
~Umesh