erichkeane wrote:

> That might not be enough. A function might not be used (or even referenced) 
> in the TU that defines it, but only in other TUs. But it would certainly 
> catch a number of issues already.

Right, though catching that ends up being pretty impossible. The most you could 
do is determine that the declaration in the defining TU doesn't have it, but 
not that other forward declarations not visible could catch it.

Unfortunately, unless an attribute contributes to mangling (which, should we 
consider that?) there is no real way to catch every case.  

Perhaps we could make this a non-inheritable attribute as well, which should 
catch at least the "added in future declarations".  I think we in a few places 
we actually DO disallow adding attributes to not-the-first-declaration (which 
could be done in 'merge', but even just SemaDeclAttr could figure that out), 
but its not particularly perfect.

So in summary:
-This could/should be caught in Sema, either MergeDeclAttrs or the SemaDeclAttr 
handling

-We can't catch cross-TU issues here unless we make `RequiresCapability` change 
mangling.

https://github.com/llvm/llvm-project/pull/67520
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to