RFR: 8253970: Build error: address argument to atomic builtin must be a pointer to integer or pointer ('volatile narrowOop *' invalid)

Jie Fu jiefu at openjdk.java.net
Sun Oct 4 12:00:36 UTC 2020


On Sun, 4 Oct 2020 03:01:56 GMT, Kim Barrett <kbarrett at openjdk.org> wrote:

>> Thanks @kimbarrett for your review.
>> I'll think it more after my holiday.
>
> What version of clang?
> 
> gcc (at least recent versions) allows enum types (both scoped and unscoped) for both the __sync_xxx functions and for
> the __atomic_xxx functions. (The documentation for both say the type can be an integral scalar or pointer type. Enums
> are not integral types.)  So this seems to be a clang incompatibility with gcc, which may be a clang bug.
> 
> The __sync_xxx functions have been legacy since gcc4.7, having been superseded by the __atomic_xxx functions. Could
> zero be updated here?  Would that help? If clang is incompatible with gcc for the __sync_xxx functions, it might also
> be incompatible for the __atomic_xxx functions.  BTW, the memory ordering by the zero implementation of Atomic::xchg in
> terms of __sync_lock_test_and_set looks wrong to me.  I think the fence() is on the wrong side of the __sync_xxx
> operation.

The following two versions of clang can reproduce the bug.

$ clang -v
Apple clang version 11.0.0 (clang-1100.0.33.16)
Target: x86_64-apple-darwin19.0.0
Thread model: posix

# clang -v
clang version 10.0.0-4ubuntu1
Target: x86_64-pc-linux-gnu
Thread model: posix

-------------

PR: https://git.openjdk.java.net/jdk/pull/496


More information about the hotspot-runtime-dev mailing list