Issue |
154417
|
Summary |
clang crash: UNREACHABLE executed at SemaDeclCXX.cpp:238
|
Labels |
clang
|
Assignees |
|
Reporter |
DKLoehr
|
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 >:: }
}
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs