================ @@ -3158,6 +3161,33 @@ checkBuiltinTemplateIdType(Sema &SemaRef, BuiltinTemplateDecl *BTD, int64_t N = Index.getExtValue(); return Ts.getPackAsArray()[N].getAsType(); } + case BTK__type_list_dedup: { + assert(Converted.size() == 2 && + "__type_list_dedup should be given a template and a parameter pack"); + TemplateArgument Template = Converted[0]; + TemplateArgument Ts = Converted[1]; + if (Template.isDependent() || Ts.isDependent()) + return Context.getCanonicalTemplateSpecializationType(TemplateName(BTD), + Converted); + + assert(Template.getKind() == clang::TemplateArgument::Template); + assert(Ts.getKind() == clang::TemplateArgument::Pack); + TemplateArgumentListInfo SyntheticTemplateArgs; + llvm::DenseSet<QualType> Seen; ---------------- zygoloid wrote:
Consider a `SmallDenseSet` here to avoid heap allocation for shorter lists. https://github.com/llvm/llvm-project/pull/106730 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits