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

            Bug ID: 88872
           Summary: ICE with g++ 8.x in cp_build_addr_expr_1, at
                    cp/typeck.c:5936
           Product: gcc
           Version: 8.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: m.olbrich at pengutronix dot de
  Target Milestone: ---

Created attachment 45437
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=45437&action=edit
Test code to reproduce the ICE

The current gcc-8-branch generates a ICE with the attached code.
This does not happen with trunk and was introduces in revision 260674
("PR c++/85864 - literal template and default template arg.").

ice.cxx:6:45: warning: literal operator suffixes not preceded by ‘_’ are
reserved for future standardization [-Wliteral-suffix]
 template <char...> constexpr a operator"" n() { return d; }
                                             ^
ice.cxx: In instantiation of ‘j< <template-parameter-1-1> >::k() [with
<template-parameter-1-1> = int]::<lambda(auto:1)> [with auto:1 = int]’:
ice.cxx:19:40:   required from ‘void j< <template-parameter-1-1> >::k() [with
<template-parameter-1-1> = int]’
ice.cxx:25:22:   required from here
ice.cxx:19:31: internal compiler error: in cp_build_addr_expr_1, at
cp/typeck.c:5936
     [](auto) { constexpr auto l = 2n; }(keywords);
                               ^
0x5906e8 cp_build_addr_expr_1
        .../gcc/gcc/cp/typeck.c:5936
0x5906e8 cp_build_addr_expr_1
        .../gcc/gcc/cp/typeck.c:5797
0x5d02b7 convert_like_real
        .../gcc/gcc/cp/call.c:7081
0x5d3669 build_over_call
        .../gcc/gcc/cp/call.c:7999
0x5d29e9 build_new_method_call_1
        .../gcc/gcc/cp/call.c:9378
0x5d29e9 build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, tree_node*, int, tree_node**, int)
        .../gcc/gcc/cp/call.c:9453
0x5d52f9 build_special_member_call(tree_node*, tree_node*, vec<tree_node*,
va_gc, vl_embed>**, tree_node*, int, int)
        .../gcc/gcc/cp/call.c:8980
0x60496f ocp_convert(tree_node*, tree_node*, int, int, int)
        .../gcc/gcc/cp/cvt.c:907
0x641545 expand_default_init
        .../gcc/gcc/cp/init.c:1843
0x641545 expand_aggr_init_1
        .../gcc/gcc/cp/init.c:2021
0x64185b build_aggr_init(tree_node*, tree_node*, int, int)
        .../gcc/gcc/cp/init.c:1761
0x60fe57 build_aggr_init_full_exprs
        .../gcc/gcc/cp/decl.c:6283
0x60fe57 check_initializer
        .../gcc/gcc/cp/decl.c:6432
0x61e99b cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
        .../gcc/gcc/cp/decl.c:7145
0x6b846c tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        .../gcc/gcc/cp/pt.c:16767
0x6b6b43 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        .../gcc/gcc/cp/pt.c:16921
0x6b6b43 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        .../gcc/gcc/cp/pt.c:16921
0x6b6b43 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        .../gcc/gcc/cp/pt.c:16921
0x6b57c8 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        .../gcc/gcc/cp/pt.c:16606
0x6b57c8 instantiate_decl(tree_node*, bool, bool)
        .../gcc/gcc/cp/pt.c:24056

Reply via email to