https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90265
Bug ID: 90265 Summary: [9/10 Regression] ICE in build_call_a at gcc/cp/call.c:396 since r268377 Product: gcc Version: 9.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: jason at gcc dot gnu.org Target Milestone: --- It's a code snippet reduced from pulseeffects project: $ cat pulse.ii void (*a)(int, int, int, void *) = [](auto, auto, auto, auto) {}; $ g++ pulse.ii -c pulse.ii: In instantiation of ‘static decltype (((const<lambda(auto:1, auto:2, auto:3, auto:4)>*)0)->operator()<auto:1, auto:2, auto:3, auto:4>(static_cast<auto:1&&>(<anonymous>), static_cast<auto:2&&>(<anonymous>), static_cast<auto:3&&>(<anonymous>), static_cast<auto:4&&>(<anonymous>)))<lambda(auto:1, auto:2, auto:3, auto:4)>::_FUN(auto:1, auto:2, auto:3, auto:4) [with auto:1 = int; auto:2 = int; auto:3 = int; auto:4 = void*; decltype (((const<lambda(auto:1, auto:2, auto:3, auto:4)>*)0)->operator()<auto:1, auto:2, auto:3, auto:4>(static_cast<auto:1&&>(<anonymous>), static_cast<auto:2&&>(<anonymous>), static_cast<auto:3&&>(<anonymous>), static_cast<auto:4&&>(<anonymous>))) = void]’: pulse.ii:1:64: recursively required from ‘<lambda(auto:1, auto:2, auto:3, auto:4)>::operator decltype (((const<lambda(auto:1, auto:2, auto:3, auto:4)>*)0)->operator()<auto:1, auto:2, auto:3, auto:4>(static_cast<auto:1&&>(<anonymous>), static_cast<auto:2&&>(<anonymous>), static_cast<auto:3&&>(<anonymous>), static_cast<auto:4&&>(<anonymous>))) (*)(auto:1, auto:2, auto:3, auto:4)() const [with auto:1 = int; auto:2 = int; auto:3 = int; auto:4 = void*; decltype (((const<lambda(auto:1, auto:2, auto:3, auto:4)>*)0)->operator()<auto:1, auto:2, auto:3, auto:4>(static_cast<auto:1&&>(<anonymous>), static_cast<auto:2&&>(<anonymous>), static_cast<auto:3&&>(<anonymous>), static_cast<auto:4&&>(<anonymous>))) = void]’ pulse.ii:1:64: required from here pulse.ii:1:64: internal compiler error: Segmentation fault 1 | void (*a)(int, int, int, void *) = [](auto, auto, auto, auto) {}; | ^ 0xf13a7f crash_signal /home/marxin/Programming/gcc/gcc/toplev.c:326 0x7ffff7b7fe0f ??? /usr/src/debug/glibc-2.29-5.1.x86_64/signal/../sysdeps/unix/sysv/linux/x86_64/sigaction.c:0 0x83e44e contains_struct_check(tree_node*, tree_node_structure_enum, char const*, int, char const*) /home/marxin/Programming/gcc/gcc/tree.h:3289 0x83e44e build_call_a(tree_node*, int, tree_node**) /home/marxin/Programming/gcc/gcc/cp/call.c:396 0x996ae2 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:18889 0x9a3888 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:18241 0x9a3888 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:17917 0x9a0762 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:17033 0x9a0610 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:17324 0x99fe6c instantiate_decl(tree_node*, bool, bool) /home/marxin/Programming/gcc/gcc/cp/pt.c:24773 0x9c69c3 instantiate_pending_templates(int) /home/marxin/Programming/gcc/gcc/cp/pt.c:24889 0x8df02b c_parse_final_cleanups() /home/marxin/Programming/gcc/gcc/cp/decl2.c:4818 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.