https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105064

--- Comment #9 from Janez Zemva <janezz55 at gmail dot com> ---
Anyway, I've grown bored, so here's the minimal test case:

#include <type_traits>

class task
{
  friend void suspend_to(auto const tp) noexcept
    requires(std::is_same_v<task* const, decltype(tp)>);
};

class loop
{
  friend void suspend_to(auto const tp) noexcept
    requires(std::is_same_v<task* const, decltype(tp)>);
};

void suspend_to(auto const tp) noexcept
  requires(std::is_same_v<task* const, decltype(tp)>)
{
}

$ g++ -std=c++20 -Ofast tmp.cpp -o t
tmp.cpp:12:55: internal compiler error: Segmentation fault
   12 |     requires(std::is_same_v<task* const, decltype(tp)>);
      |                                                       ^
0xe4c988 internal_error(char const*, ...)
        ???:0
0xf778a4 duplicate_decls(tree_node*, tree_node*, bool, bool)
        ???:0
0xf82c3b pushdecl_namespace_level(tree_node*, bool)
        ???:0
0x10ecbfe push_template_decl(tree_node*, bool)
        ???:0
0x159b601 do_friend(tree_node*, tree_node*, tree_node*, tree_node*,
overload_flags, bool)
        ???:0
0x1001717 grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*,
decl_context, int, tree_node**)
        ???:0
0x105cc75 grokfield(cp_declarator const*, cp_decl_specifier_seq*, tree_node*,
bool, tree_node*, tree_node*)
        ???:0
0x14e7873 c_parse_file()
        ???:0
0x14c9d9e c_common_parse_file()
        ???:0
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://bugs.archlinux.org/> for instructions.

Reply via email to