aaron.ballman added inline comments.

================
Comment at: clang/include/clang/Basic/Attr.td:2655
+
+def Retain : InheritableAttr {
+  let Spellings = [GCC<"retain">];
----------------
MaskRay wrote:
> aaron.ballman wrote:
> > Should this be a target-specific attribute as it only has effects on ELF 
> > targets?
> As I understand it, GCC `retain` is not warned on unsupported targets.
> 
> Regardless of GCC's choice, I think not having a `warning: unknown attribute 
> 'retain' ignored [-Wunknown-attributes]` diagnostic makes sense. `retain` 
> will be usually used together with `used`. In Clang, `used` already has 
> "retain" semantics on macOS and Windows (I don't know what they do on GCC; 
> GCC folks want orthogonality for ELF and I agree). If `retain` is silently 
> ignored on macOS and Windows, then users don't need to condition compile for 
> different targets.
The other side of that is a user who writes only `retain` and expects it to do 
something when it's actually being silently ignored. While they may usually use 
it in conjunction with `used`, I'm more worried about the situation where the 
user is possibly confused.


================
Comment at: clang/lib/Sema/SemaDecl.cpp:2834
   }
+  if (RetainAttr *OldAttr = Old->getMostRecentDecl()->getAttr<RetainAttr>()) {
+    RetainAttr *NewAttr = OldAttr->clone(Context);
----------------
MaskRay wrote:
> aaron.ballman wrote:
> > I realize you're following the same pattern as the used attribute, but.. 
> > why is this code even necessary? The attributes are already marked as being 
> > inherited in Attr.td, so I'd not expect to need either of these. (If you 
> > don't know the answer off the top of your head, that's fine -- I can 
> > investigate on my own.)
> Without `setInherited`, `attr-decl-after-definition.c` will fail. (I don't 
> know why..) So I will keep the code but add a test case using the variable 
> `tentative`.
Thanks, if I get the chance, I'll try to look into why this code is necessary 
(and make adjustments if needed).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D96838

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

Reply via email to