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