aaron.ballman added a comment.

In D125919#3554599 <https://reviews.llvm.org/D125919#3554599>, @rjmccall wrote:

> Ah, true, the standard doesn't describe it as a normal qualifier.  From the 
> DR, it sounds like the committee certainly expected that this reasoning would 
> also apply to `_Atomic`, even if that's not quite what they've written, but 
> that the DR submitter seems to not want that behavior.  Have you been able to 
> track down the solicited paper mentioned in that DR?  In the absence of 
> further indication, I think dropping `_Atomic` like anything else is the 
> right thing to do; like the other qualifiers, it isn't meaningful for 
> r-values.

I think it's less clear to me that the committee expected to drop `_Atomic` 
because the standard basically makes `_Atomic` introduce a new type rather than 
a qualified use like `const`; it's more akin to `_Complex` in that regard. 
e.g., it's not clear to me that these are redeclarations:

  int func(void);
  _Atomic(int) func(void);

When I survey non-Clang C compilers which support `_Atomic`, it's evenly split 
between thinking these are valid redeclarations or not (GCC and ICC say they're 
not valid redeclarations, ICC and TCC say they are) but when I use `const int` 
and `int` as the return types, only ICC claims they're incompatible types.

Further, this seems like a gratuitous incompatibility with C++ where the 
qualifiers are *not* dropped, given that function call expressions explicitly 
drop the qualifiers anyway. (So you're right, they are effectively useless on 
the return type, but why should C and C++ differ in what's a valid 
redeclaration?)


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