https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65498
--- Comment #8 from Marek Polacek <mpolacek at gcc dot gnu.org> --- After we process functions, we remove the unused ones here 1112 if (!node->aux && !node->referred_to_p ()) 1113 { 1114 if (symtab->dump_file) 1115 fprintf (symtab->dump_file, " %s", node->name ()); 1116 node->remove (); Afterwards we start the mangling: for each symbol we call insert_to_assembler_name_hash, even for __func__, but that doesn't have DECL_ASSEMBLER_NAME set, which means we call mangle_decl for it, that calls get_mostly_instantiated_function_type later on, and that subsequently calls cxx_eval_call_expression, and here we ICE. Any ideas?