[clang] [clang-tools-extra] [Clang] Add __builtin_type_pack_dedup template to deduplicate types in template arguments (PR #106730)
Ilya Biryukov via cfe-commits
cfe-commits at lists.llvm.org
Tue May 13 06:50:14 PDT 2025
ilya-biryukov wrote:
I have made quite a bit of progress here, but we also need the deduplication builting urgently to help ease the pain for
some of the big compilations that started hitting our infrastructure limits internally.
I have created #139730 with the initial and simple version of the builtin that I would really love to land ASAP as I expect this PR to take more time to cook (see open questions below, I'm sure there will be a few more comments). I fully understand the desire to have a better version of the builtin in the long term and I am happy to continue working on this until it lands. But we also need the build time savings at a shorter timeframe, so I hope that having a simpler version in the meantime would not be a particularly contentious point. Let me know, though.
With that out of the way, @cor3ntin could you take a look at the new version here?
It still has a few rough edges, but I want to make sure the choices made here make sense to you, in particular:
- using `TemplateSpecializationType` for dependent instantiations and for sugar after we have a template pack after substitution,
- doing a second run during template instantiations when we need to expand the packs that are delayed,
- a new type (that shares a common base class with `SubstTemplateParmPackType`) to represent the pack after substitution.
Also eager to hear feedback from others, just calling out @cor3ntin as someone who has been the author of the relevant standard proposals that this PR is trying to mimic.
https://github.com/llvm/llvm-project/pull/106730
More information about the cfe-commits
mailing list