[Bug c++/99831] New: ICE: in reshape_init, at cp/decl.c:6720
hewillk at gmail dot com
gcc-bugzilla@gcc.gnu.org
Tue Mar 30 14:27:42 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99831
Bug ID: 99831
Summary: ICE: in reshape_init, at cp/decl.c:6720
Product: gcc
Version: 11.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: hewillk at gmail dot com
Target Milestone: ---
This is a complicated one since I don't know how to reduce it.
https://godbolt.org/z/rqTGxMWef
#include <algorithm>
template <int N>
struct StringLiteral {
constexpr StringLiteral(const char (&str)[N]) {
std::ranges::copy_n(str, N, value);
}
char value[N];
};
template <StringLiteral>
struct string{
constexpr bool operator==(const string&) const noexcept = default;
};
template <StringLiteral L1, StringLiteral L2>
constexpr auto operator+(string<L1>, string<L2>) {
constexpr auto L3 = []{
constexpr auto size1 = sizeof(L1.value);
constexpr auto size2 = sizeof(L2.value);
char value[size1 + size2 - 1] = {};
std::ranges::sort(value);
std::ranges::copy_n(L1.value, size1, value);
std::ranges::copy_n(L2.value, size2, value + size1 - 1);
return StringLiteral{value};
}();
return string<L3>{};
}
static_assert(
string<"hello, world">{} ==
string<"hello">{} + string<", world">{}
);
static_assert(
string<"a rose is a rose is a rose">{} ==
string<"a rose">{} + string<" is ">{} +
string<"a rose">{} + string<" is ">{} +
string<"a rose">{}
);
<source>:36:40: internal compiler error: in reshape_init, at cp/decl.c:6720
36 | string<"a rose is a rose is a rose">{} ==
| ^
0x1cfb6a9 internal_error(char const*, ...)
???:0
0x6ba871 fancy_abort(char const*, int, char const*)
???:0
0x7810b6 reshape_init(tree_node*, tree_node*, int)
???:0
0x97e050 finish_compound_literal(tree_node*, tree_node*, int, fcl_t)
???:0
0x8e12ad c_parse_file()
???:0
0xa600a2 c_common_parse_file()
???:0
Please submit a full bug report,
with preprocessed source if appropriate.
More information about the Gcc-bugs
mailing list