[PATCH] D118021: [Driver] Use libatomic for 32-bit SPARC atomics support

Rainer Orth via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Jan 24 02:45:07 PST 2022


ro added inline comments.


================
Comment at: clang/lib/Driver/ToolChains/Solaris.cpp:135
     }
+    // LLVM lacks atomics support on 32-bit SPARC, so forcibly link with
+    // libatomic as a workaround.
----------------
glaubitz wrote:
> joerg wrote:
> > This comment is misleading. It's not so much that LLVM doesn't support them, but that SPARCv8 doesn't have the necessary hardware support. The v8+ support is incomplete, which is a related problem though.
> As far as I know, 64-bit atomics are supported if you enable V8+ in GCC - without linking against `libatomic`:
> 
> ```
> glaubitz at gcc202:~$ cat atomic.c
> #include <stdint.h>
> 
> int main()
> {
>   int64_t x = 0, y = 1;
>   y = __sync_val_compare_and_swap(&x, x, y);
>   return 0;
> }
> glaubitz at gcc202:~$ gcc -m32 -mv8plus atomic.c -o atomic
> glaubitz at gcc202:~$
> ```
I know, that's why I referred to my patch to default `clang` on
Solaris/sparc to V8+.  I'll update the comment.

I'd tried to actually fix the underlying issue (`clang` not emitting
`casx` with `-m32 -mcpu=v9`), but ran into internal errors and
areas of LLVM I know nothing about.  I might post a WIP patch
for reference since there are several issues there.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D118021/new/

https://reviews.llvm.org/D118021



More information about the cfe-commits mailing list