[PATCH] Initial support for Attribute subjects

Aaron Ballman aaron at aaronballman.com
Wed Jul 10 10:12:11 PDT 2013


On Wed, Jul 3, 2013 at 9:15 AM, Aaron Ballman <aaron at aaronballman.com> wrote:
> Ping?
> On Thu, Jun 27, 2013 at 8:44 AM, Aaron Ballman <aaron at aaronballman.com> wrote:
>> Ping?
>> On Mon, Jun 24, 2013 at 1:34 PM, Aaron Ballman <aaron at aaronballman.com> wrote:
>>> Based on feedback from Richard, here is another pass at modifying
>>> tablegen for Subjects support.  The delta here is that templates have
>>> been removed and replaced by a method pair (one for Decl and one for
>>> Stmt).  The usage is still the same as before: you can call
>>> appertainsTo and pass in something you want to know whether the
>>> attribute appertains to it or not, and it will return a Boolean.
>>> ~Aaron
>>> On Thu, Jun 20, 2013 at 5:34 PM, Aaron Ballman <aaron at aaronballman.com> wrote:
>>>> This patch adds support for the Subjects part of the Attr tablegen
>>>> file.  Specifically, it modifies tablegen to pay attention to
>>>> Subjects, and emit a templated member function for attribute
>>>> subclasses called appertainTo.  The purpose is to be able to determine
>>>> whether a given attribute appertains to a particular subject.
>>>> template <typename Subject>
>>>> bool appertainTo(const Subject *S) const;
>>>> If the attribute has no subjects, then the default behavior of
>>>> appertainTo is to return true.  This makes it backwards compatible
>>>> with the fact that we've always ignored subjects previously (and many
>>>> attributes do not have a specific subject specified).
>>>> If the attribute does have subjects, then the default appertainTo will
>>>> return false, but specializations will be generated that return true
>>>> for each subject case.  If the subject happens to be a SubsetSubject,
>>>> the code from CheckCode is emitted (hence the reason for having the
>>>> subject passed into the function) and the proper base is taken from
>>>> the subject.
>>>> ~Aaron

More information about the cfe-commits mailing list