<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/113030>113030</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang] clang frontend hangs
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          danix800
      </td>
    </tr>
</table>

<pre>
    https://godbolt.org/z/fG5ooW4z7

```cpp
template<typename _Tp, _Tp __v>
struct integral_constant {
        static constexpr _Tp value = __v;
};

template<typename _Tp> struct remove_reference {
        typedef _Tp type;
};

typedef int size_t;

template<typename> struct tuple_size;

template<typename _Tp, _Tp...> struct integer_sequence;

template<typename T> using _t = T;

enum indices_strategy_ { repeat, };

constexpr indices_strategy_ strategy_(size_t cur, size_t) { return repeat; }

template<size_t, typename, indices_strategy_> struct make_indices_;

template<size_t... Is> using index_sequence = integer_sequence<size_t, Is...>;

template<size_t N>
using make_index_sequence = _t<make_indices_<N, index_sequence<0>, strategy_(1, N)>>;

template<size_t End, size_t... Values>
struct make_indices_<End, index_sequence<Values...>, repeat>
        : make_indices_<End, index_sequence<Values..., Values...>, strategy_(2, End)> {
};

template<typename Tup>
using tuple_indices_t = make_index_sequence<tuple_size<typename remove_reference<Tup>::type>::value>;

struct {
        template<typename Fun, typename Tup>
        auto operator()(Fun, Tup) -> decltype(tuple_indices_t<Tup>{});
} tuple_apply;

template<typename...> class tuple {};

template<typename... _Elements>
struct tuple_size<tuple<_Elements...>>: integral_constant<size_t, sizeof...(_Elements)> {};

struct view_closure_base {
        template<typename Rng, typename ViewFn>
        friend auto operator|(Rng rng, ViewFn vw) {
                vw(rng);
        }
};

template<typename ViewFn> struct view_closure: view_closure_base, ViewFn {};

template<typename Fun>
struct iter_zip_with_view {
        template<int>
        struct cursor {
                Fun fun_;
                tuple<> its_;
                auto read() -> decltype(tuple_apply(fun_, its_));
        };

        cursor<false> begin_cursor;
};

template<typename... Rngs>
struct zip_view: iter_zip_with_view<Rngs...> {};

struct {
        template<typename... Rngs>
        zip_view<Rngs...> operator()(Rngs...);
} zip;

template<typename, typename>
struct index_view {};

struct enumerate_fn {
        template<typename Rng> auto operator()(Rng) {
                using D = Rng;
                zip(index_view<int, D>());
        }
};

view_closure<enumerate_fn> enumerate;
void determineInlinableBlocks(int _items) { _items | enumerate; }
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJycV0tz6jgT_TVio7qUkAm2FywSA19lk0Uqdb-lS9iN0VwjeySZPH79VMs2fpHATFUq-KHuPn26T1sSxshMAazJwxN52MxEZY-FXqdCyY-Asdm-SD_XR2tLQ7xHwneE77Ii3Re5nRc6I3z3Rfju8L-Hovj_8ssnbEPYY_N_xeq_pCzrJxZOZS4sEC-ynyUocQIav5WER_hD4_hMvG291FhdJZZKZSHTIo-TQhkrlKXEf2qDhMYKKxPq3sFHqZ2Xs8groMTb1P7a1f6mu_4RjLelTXANp-IMsYYDaFAJDGKjTQoHFxKvf4rULJXKUiO_ILa3ofRg2KrMIUbDOzOo6ZzP5z0njkjQsYG_K8zlDldvaF4ZqTIaW0fo28gKVHWiUqUyARMbq4WF7DNGmqiGEoRFKFM-unpNbS9XhAc1VzSpNPppmONh499WWrVhvCcX5npCrWFEL-TyaBq6R9ZJ_IG4XfA9U7Xj-XxOn03HlVQpfFx4drxNye-BejZ1pW7FoS8XcdSBWpTjaNhe0SiF6KXJubeYeBFDl8htj_UFPnghPHSYbsPaqrQrD5LxGwVoxkoeA2rMJpBq64YSHl0qvL0oj3iP_8Ebj-jYdT9rjg-cF8y7p_S75sZbVY6KU4u2RVjL50rB0ElP3p3H8ewhXtQE8R6J91hPnObGTbxpqRriB0PrCvZdpfraGORCWCgqW9CiBC1soQkPkCAeNEa4lof0F1KWQpI7WDwYJd9h95-QT6S4o7ehSpRl_nmb6maqJbkwprakjdd7TGm8zeEEyk7ac1gFvCFedFndKhQJn36TBnLGq-LgOi7oonVdNUHaADhLeI-TvDCVhngvDNws3KvKBoX7LeF9p_q1O2gJKqXDEvoR4cGryqiu7Wszen5vRmunMxbiw8Ct65WMhd2svUsdF2D0Sq7I6CT3Hq57q-v6eLx7sKDjL1nG79IeY4zyHalSDUZMY59U2hR6TMquUvRQqXjACAvbpsE8pTXj164IGkRaa-gbzdQq4IHzjwMNHaHiJvwPCSEsrMESLzqI3Lj9wx4yqeL2-b8ZaCiVV5VNVIJcIo1OBhNyiRehUSPRn5r9RmtPwhMWdqH7QSaDqX03mjFfsrxjz9XfIkw2oji2Ly30XWK4I0JEEB_UXQL2tvT6hHXqngiy_rhs3OfEmQ_eYpY86KA2jc0junGfvOB6K33TF0OVRv3UEPbl_mJ2LmRKU7CgT1LBs8qlEvscnvIi-WMcMEtjaeFk2l1cfUeJHw3c9TZz7Rlilq69NPRCMYP1wuehx8PFis-O61WyCverdBWyRAgWLISfJCwUzN-n3mGVsplcc8aXC7YIWbjgSz73D8nyQTDuc38ZwMonSwYnIfN5np9PeKiZSWMqWC8WHvPYLBd7yI07HnGe5ALrwvGkpNdo8GtfZYYsWS6NNZ0LK23uzlS1xcOGugt60IWyOJSPQmVmVul8fLiS9ljt50lxInyH7pqfX6Uu_oLEEr5z8Azhuwbhec3_CQAA__-FTjp5">