[Bug c++/90265] New: [9/10 Regression] ICE in build_call_a at gcc/cp/call.c:396 since r268377

marxin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Apr 26 18:53:00 GMT 2019


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.


More information about the Gcc-bugs mailing list