[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?


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