[cfe-commits] [PATCH] Instantiate dependent attributes in template code.

Richard Smith richard at metafoo.co.uk
Fri Jan 13 17:13:17 PST 2012


On Fri, January 13, 2012 23:03, Delesley Hutchins wrote:
> The instantiateFromTemplate method is only called from within Sema.
> Is the layering violation introduced by the forward declaration of
> class Sema within Attr.h?

It's introduced by the call of Sema::SubstExpr from instantiateFromTemplate.

> On Fri, Jan 13, 2012 at 2:33 PM, Richard Smith <richard at metafoo.co.uk> wrote:
>
>> Hi Delesley,
>>
>>
>> Apologies for the huge delay in getting this patch reviewed!
>>
>>
>> On Tue, December 13, 2011 23:08, Delesley Hutchins wrote:
>>
>>> This patch modifies Sema::InstantiateAttrs so that attributes in
>>> template code are properly instantiated; the previous behavior was to
>>> clone them.  The main motivation for the patch are thread safety
>>> attributes, which make extensive use of expressions.
>>>
>>> A new method named instantiateFromTemplate is now generated for all
>>> attributes.  The behavior of this method is identical to clone() for all
>>> arguments except ExprArgument and VariadicExprArgument; expression
>>> arguments are instantiated rather than cloned.
>>
>> This patch introduces a layering violation: AST code is not permitted to
>> use Sema. In order to resolve this, I suggest you instead modify TableGen to
>>  synthesize some Sema code which performs attribute instantiation (using a
>> switch over the attribute kind).
>>
>> Thanks,
>> Richard
>>
>>
>
>
>
> --
> DeLesley Hutchins | Software Engineer | delesley at google.com | 505-206-0315
>
>




More information about the cfe-commits mailing list