[libcxx-commits] [PATCH] D96523: [libc++] Rewrite the tuple constructors to be strictly Standards conforming

Jordan Rupprecht via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu Apr 29 15:47:55 PDT 2021


rupprecht added a comment.

We're seeing some issues with this patch manifested as complicated tuple expressions that hit compiler limits with template depth. A bit of a synthetic example, but here it is: https://godbolt.org/z/TzvzWhYYs

  template <size_t... I>
  void MakeFoo(std::index_sequence<I...>) {
    auto tup = std::make_tuple(I...);
    (void)tup;
  }
  
  void Broken() {
    // At trunk, when this is >= 508, we see:
    // fatal error: recursive template instantiation exceeded maximum depth of
    // 1024
  
    auto seq = std::make_index_sequence<508>{};
    MakeFoo(seq);
  }

Prior to this patch, the breaking point is at 1021. Interestingly though, this didn't reproduce in the latest clang/llvm 12 release on godbolt. I did a second bisection to D50106 <https://reviews.llvm.org/D50106> as the point where `std::make_index_sequence<1021>{}` newly fails.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D96523/new/

https://reviews.llvm.org/D96523



More information about the libcxx-commits mailing list