[PATCH] D31343: Add an attribute plugin example
John Brawn via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Mar 3 06:02:16 PST 2020
john.brawn added a comment.
I've been looking into attribute merging, and as far as I can tell there's two things going on:
- In SemaDeclAttr.cpp, the various handleXyzAttr functions may call mergeXyzAttr to handle clashes with other attributes within the same declaration.
- In SemaDecl.cpp, several functions call mergeDeclAttributes, which calls mergeXyzAttr, to handle clashes with attributes in a previous declaration of the same thing.
For the first kind, the handleDeclAttribute function defined for a plugin attribute can check for and handle clashes with other attributes. For the second kind, at that point we're using subclasses of Attr which means we're beyond the scope of plugin attributes which just work in the realm of ParsedAttrs.
So I think things are OK, though I guess it depends on what exactly your plugin is doing - our use-case is that the plugin-defined attribute is just used to set an AnnotateAttr, which is used to tell a plugin-defined LLVM pass that it needs to do something in that function, so we don't need anything special to happen with regards to attribute merging.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D31343/new/
https://reviews.llvm.org/D31343
More information about the cfe-commits
mailing list