[llvm-dev] Over-ride the compiler built-in functions .
Umesh Kalappa via llvm-dev
llvm-dev at lists.llvm.org
Mon Jan 20 02:57:05 PST 2020
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200120/bc5eb5a9/attachment.html>
More information about the llvm-dev
mailing list