aaron.ballman added inline comments.

================
Comment at: clang/lib/Sema/SemaDeclAttr.cpp:4553
+  // we always add (and check) the attribute to the cannonical decl.
+  D = D->getCanonicalDecl();
+  if(AL.getKind() ==  ParsedAttr::AT_Owner) {
----------------
xazax.hun wrote:
> aaron.ballman wrote:
> > Will this work? What happens if we see a forward declaration with this 
> > attribute first and then see the canonical declaration later? I suspect 
> > this work needs to be done when merging declaration attributes instead.
> For `TagDecl`s the canonical decl is the first declaration:
> ```
> TagDecl *TagDecl::getCanonicalDecl() { return getFirstDecl(); }
> ```
> 
> So I suspect we can never see a non-canonical declaration first. And once we 
> see the canonical declaration it remains the same no matter how many new 
> declaration do we see.
This is the scenario I am worried about:
```
struct [[whatever]] Foo;
struct Foo {};
```


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D63954



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

Reply via email to