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 <[email protected]> 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 | [email protected] | 505-206-0315 > > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
