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.