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

Delesley Hutchins delesley at google.com
Fri Jan 13 15:03:51 PST 2012


The instantiateFromTemplate method is only called from within Sema.
Is the layering violation introduced by the forward declaration of
class Sema within Attr.h?

  -DeLesley

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