https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86397
Bug ID: 86397 Summary: g++ ICE at on valid code in nothrow_spec_p, at cp/except.c:1158 Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: helloqirun at gmail dot com Target Milestone: --- g++-6.1 compiles. g++-8.1 and the trunk version crash. $ g++-trunk -v Using built-in specs. COLLECT_GCC=g++-trunk COLLECT_LTO_WRAPPER=/home/absozero/trunk/root-gcc/libexec/gcc/x86_64-pc-linux-gnu/9.0.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../gcc/configure --prefix=/home/absozero/trunk/root-gcc --enable-languages=c,c++ --disable-werror --enable-multilib Thread model: posix gcc version 9.0.0 20180703 (experimental) [trunk revision 262340] (GCC) $ g++-trunk abc.c abc.c: In instantiation of ‘void f(int (*)() noexcept (e)) [with bool <anonymous> = false]’: abc.c:3:29: required from here abc.c:2:22: internal compiler error: in nothrow_spec_p, at cp/except.c:1158 template <bool> void f(int() noexcept(e)) {} ^ 0x615664 nothrow_spec_p(tree_node const*) ../../gcc/gcc/vec.h:972 0x9b91b7 canonical_eh_spec(tree_node*) ../../gcc/gcc/cp/tree.c:2598 0x8ddfdd canonicalize_for_substitution ../../gcc/gcc/cp/mangle.c:422 0x8ddfdd write_type ../../gcc/gcc/cp/mangle.c:2107 0x8dd9cc write_type ../../gcc/gcc/cp/mangle.c:2306 0x8df6f4 write_method_parms ../../gcc/gcc/cp/mangle.c:2799 0x8e564a write_bare_function_type ../../gcc/gcc/cp/mangle.c:2735 0x8e6534 mangle_decl_string ../../gcc/gcc/cp/mangle.c:3795 0x8e6a50 get_mangled_id ../../gcc/gcc/cp/mangle.c:3817 0x8e6a50 mangle_decl(tree_node*) ../../gcc/gcc/cp/mangle.c:3855 0x11172cd decl_assembler_name(tree_node*) ../../gcc/gcc/tree.c:691 0x115bd9f notice_global_symbol(tree_node*) ../../gcc/gcc/varasm.c:1675 0xadc8fa cgraph_node::finalize_function(tree_node*, bool) ../../gcc/gcc/cgraphunit.c:451 0x9a1c5f expand_or_defer_fn(tree_node*) ../../gcc/gcc/cp/semantics.c:4272 0x961483 instantiate_decl(tree_node*, bool, bool) ../../gcc/gcc/cp/pt.c:24084 0x9873d3 instantiate_pending_templates(int) ../../gcc/gcc/cp/pt.c:24179 0x8b0448 c_parse_final_cleanups() ../../gcc/gcc/cp/decl2.c:4707 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. $ cat abc.c void e(); template <bool> void f(int() noexcept(e)) {} template void f<false>(int());