I'm still a bit unclear -- I want to make sure I understand which dependencies cause a layering violation, so I can avoid this mistake in the future. There's still no dependency in the call graph, because instantiateFromTemplate is only called from within Sema. There is a dependency in the object file though, because Attr must be linked against Sema to instantiate the virtual method table. Is the goal to be able to package the AST classes into a separate library that does not need to be linked against Sema?
-DeLesley On Fri, Jan 13, 2012 at 5:13 PM, Richard Smith <[email protected]> wrote: > 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 >> >> > -- DeLesley Hutchins | Software Engineer | [email protected] | 505-206-0315 _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
