<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/154417>154417</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang crash: UNREACHABLE executed at SemaDeclCXX.cpp:238
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
DKLoehr
</td>
</tr>
</table>
<pre>
Found in the wild while messing around. Unfortunately, the original source code didn't compile, so I'm not able to provide a nice tidy repro. The attached file was minimized by cvise, but is still nontrivial. I've tried making it smaller, with minimal success.
Clang build mode was `RelWithDebInfo`, with assertions enabled.
Expected result: compile failure without crashing.
Repro files don't want to upload for some reason, so the minimized example is below. I ran with `clang++ -Wno-everything -std=c++20`.
```
template < int > struct integral_constant;
template < class _Tp >
struct is_move_constructible : integral_constant< __is_constructible(_Tp, _Tp ) >;
template < template < class >
class _BaseType, class _Tp, _Tp _SequenceSize >
using __make_integer_sequence_impl = __make_integer_seq< _BaseType, _Tp, _SequenceSize >;
template < class , _Tp... >
struct __integer_sequence;
template < int _SequenceSize >
using __make_index_sequence =
__make_integer_sequence_impl< __integer_sequence, int, _SequenceSize >;
template < int >
struct __all;
template < class >
struct __make_tuple_types { using type = int >}
template < class, class... _Tp >
struct __tuple_impl : _Tp ... {
template < class _Tuple >
__tuple_impl(_Tuple &&) noexcept(__all< is_nothrow_constructible<
typename __make_tuple_types< _Tuple >::type >::
type >::value__tuple_leaf0);
};
template < class... _Tp >
struct tuple {
__tuple_impl< __make_index_sequence< 0 >, _Tp... > __base_;
}
template < class _Tp >
using __optional_sfinae_ctor_base_t = is_move_constructible< _Tp >;
template < class _Tp >
struct optional : __optional_sfinae_assign_base_t< _Tp > template <typename >
struct TypedStatus {
template < typename O >
struct Or {
optional< tuple< O > > value_;
};
};
struct ResolvedSourceString;
struct SubstitutingParser { using ParseInto = ResolvedSourceString; };
template < typename T >
struct Quoted { TypedStatus<int>::Or< T::ParseInto > Parse; }
struct ResolvedSourceString {
ResolvedSourceString(ResolvedSourceString &) ;
struct RawStr : SubstitutingParser Parse() { auto Quoted< RawStr >:: }
}
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyMVt1y4jgTfRpx0xXKyAHDBRf8JPWlvqmd3ZCpmTuXbDegHVnySm0I8_Rbkm1-EiezKZJgrD59zukjYeGc3GnEORsv2Xg9EDXtjZ2v___F4N4OMlOc5o-m1gVIDbRHOEpVwHEvFUKJzkm9A2H9giF801tjqdaCUJ0YX4X1xsqd1EKBM7XNEXJTIBSy0IwnBLkpK6nQL3YGnhhPStCGQGQKgQxU1hxkgSBAyxyBZHECi5U1Q3jZIwgike-xgK3ncxQOSqllKX9hAdkJ8oN0ATurCaQDR1Ip0EaTlQcp1DB0PCCQlVhAKX56OZLAlUIptL70KGnfoHoNdZ6jc0MWLVi0WCmhd5DV3pHSy_IE2CR6RvVd0n6N2ZPeGjaJzjjCObQkjXaA2mssWqiH1wpzwgIsuloRixedNbAVUtUWA4CpCXIr3F7qXVv57N0I-h0UpnH1KDR59-pKGVHA1lhwpkSwKJxfEsz2w7m4ha-irBR6lzJU5jiEJ7BCN7TZJMq9VsaXjC_h7rs2d3hAeyJPBO4cFSxe581tHrFJ1JLz2ptXtCAsKyUIgcUrkJqAxQ_gyNY5-UvcWaHS3GhHQhOLlw3CTVWuhHOQvlS-lkWLrtqlpTlgU-w_kT493sMe3BWkqXS3axmfpi-V96UB57PQoJdDD6GGTEtuKRy-nKoQuzNff-GR0w3-U6POcSN_YVtXhz2UpqX4iWkgjDZ17bpUlpUCFq97FgQt1-26Ru-aBCEAAP2GtrXD4fDW1_QdnX5L_DD_g7ICX89AXlLg9JnudlhvOfDQ8ROlH4TtWphQ6rOIvVkdKFJdKUzpVKEDliyhUeevw3y6Jsn6I9RzIrzR70Kctg3agS-aKIaZJGF8vTvBl7Q4cAMRIt3c5ZPwmoE2-JpjRf5e48DK7x1taG_N8c2WiFdtZrofr1SLEnv8CIO6cIkXLF60xrRXb7CuMS-LDkLV2IlQKLYR47N2TMn6k3n1GkoNn8a8W29CrnpS6W9EAeVmR0CaZsJheqHy-6Opy76p_HEvVOq2UgtMczK2QaMmNn1nV-Nn9XGiPzgIu2YhP-97N9_1bferHjfROo-5hb6g-2Om2JCgutkAwdfbs7Gr_dplsi39as-DgDPLUOGH4t-EivDbpKA7sy6Dv0pAi_qMzqgDFpvwZLEhK_Xu7ZpNnTmSVJPUuz-FdWivNm_44EmTCaP4AA4-zN5Z7svtGP6qjf8q932uPGPxyh9bXdi_Wg_x0lxcE3loaHWdfyf4bGwvfT7tr2kOhM7kDl4cN2RDeHpsa1jxaShMliBqMq1Ur-Rc3OrryDd_u-eAQTGPi1k8EwOcj5LxeBLf8ygZ7OdZLuIpTscFYixiTMbTSIzjLc-SvMiKUTaQcx7xcTQdzXg0iqJkeI_JaDyaTQo-nhY8RnYfYSmkGip1KIfG7gbSuRrno_H9_SgZKJGhcuExl_P2aYb7J1479wV3Wb1z7D5S0pG7QJAkhfOwvHnw8sq-_fH8sFj9b7H88gD4inntpy0INliKNeZq9ePHMK8qFi94PB3UVs33RJXzvvBHxh93kvZ1NsxNyfijb9X-u6us-RtzYvwxUHeMP7bsD3P-bwAAAP__BA7Gcw">