LGTM, thanks!

On Tue, Jun 25, 2013 at 7:02 PM, Faisal Vali <[email protected]> wrote:
> Richard,
>   based on your guidance in:
> http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20130624/082605.html
> , attached is a patch that fixes a tinyish bug in template
> instantiation that causes
> an assertion violation during PCH writing, which assumes no local
> implicit instantiations
> are pending at the end of the translation unit.
>
> As noted by Richard in the linked to post, the following code should
> not add an entry
> into PendingLocalImplicistInstantiations, since local instantiations
> should only occur
> within the context of other instantiations.
> int foo(double y) {
>    struct Lambda {
>       template<class T> T operator()(T t) const { return t; };
>    } lambda;
>    return lambda(y);
> }
>
> Hence the attached code does the following:
>   1) In MarkFunctionReferenced, check if ActiveInstantiations.size() is 
> non-zero
>       before adding to PendingLocalImplicitInstantiations.
>   2) In InstantiateFunctionDefinition, we swap out/in
> PendingLocalImplicitInstantiations
>       so that only those pending local instantiations that are added
> during the instantiation
>       of the current function are instantiated recursively.
>
> Thanks!
> Faisal Vali
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to