On 10/31/2013 05:47 AM, Adam Butcher wrote:
+ become_template = true;
+ push_deferring_access_checks (dk_deferred);
Why is this call here? I don't see anything in the rest of the function that would trigger an access check, or a matching pop.
+ /* Create a distinct parameter pack type from the current parm and add it + to the replacement args to tsubst below into the generic function + parameter. */ + + tree t = copy_type (TREE_TYPE (TREE_VALUE (TREE_VEC_ELT (current, i)))); + TYPE_STUB_DECL (t) = TYPE_NAME (t) = TEMPLATE_TYPE_DECL (t);
Is this changing anything? I'm not sure if we need to copy the decl or if we can just reuse it, but either way we need to set the type of TEMPLATE_TYPE_DECL (t) to t.
+ SET_TYPE_STRUCTURAL_EQUALITY (t);
Why not TYPE_CANONICAL (t) = canonical_type_parameter (t); ? Jason