rsmith added a comment.

In D125919#3556418 <https://reviews.llvm.org/D125919#3556418>, @aaron.ballman 
wrote:

> In D125919#3556319 <https://reviews.llvm.org/D125919#3556319>, @rjmccall 
> wrote:
>
>> Now, the standard has chosen not to talk about `_Atomic` as a qualifier, I 
>> assume because there's a fair number of rules in the standard that assume 
>> that qualifiers can be freely added to pointers and don't change layout and 
>> so on, none of which apply to `_Atomic`.  But those rules also don't apply 
>> to a large number of other extended qualifiers, like address spaces and the 
>> ARC ownership qualifiers and `__ptrauth`.  The committee should probably 
>> just come to terms with the fact that it's the relatively easy-come-easy-go 
>> nature of the CVR qualifiers which is the special case.  I've thought for 
>> awhile that Clang should really be representing `_Atomic` as a qualifier 
>> instead of having to treat `AtomicType` as a special case in a million 
>> places.
>
> I'm not certain if we can get away with that. IIRC, Microsoft uses embedded 
> locks on Windows in some circumstances. However, cl doesn't support `_Atomic` 
> and so maybe we can get away with it on the assumption we have no other 
> targets where the size/alignment would be different for an atomic type vs a 
> non-atomic type?

That assumption does not hold. Given `struct A { char c[3]; };`, `struct A` has 
size 3 and align 1, but `_Atomic struct A` has size 4 and align 4 across many 
(perhaps all?) of our targets. (This is an ABI divergence between GCC and 
Clang, which as far as I know the psABI owners have so far not succeeded in 
resolving.)

I saw some talk in WG14 of separating `_Atomic(T)` and `_Atomic T` so that 
`_Atomic T` would be a qualifier that doesn't affect size or alignment, only 
what code is generated to access the value, and `_Atomic(T)` would be a 
distinct type with potentially a different representation in order to support 
lock-free atomic access. Did that go anywhere? (I'd assume not, it seems to be 
at least a decade too late for such an idea.)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D125919

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to