http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56757
Bug #: 56757 Summary: ICE in int_cst_value/get_non_default_template_args_count on invalid source Classification: Unclassified Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: ppluzhni...@google.com While doing creduce for something else, I noticed that current trunk (r197163) dumped core on invalid reduction. I then creduce'd the invalid to this gibberish: /// --- cut --- namespace std template < class, class > struct pair; struct less struct _Select1st } template < typename, typename, typename, typename, typename > class _Rb_tree; namespace std template < typename _Key, typename _Compare = std:less, typename _Alloc > class map { typedef _Key key_type typedef std::pair < >value_type typedef _Compare key_compare typedef typename _Alloc::template rebind < value_type >::other _Pair_alloc_type typedef _Rb_tree < key_type, value_type, _Select1st, key_compare, _Pair_alloc_type > _Rep_type typedef typename _Rep_type::iterator iterator std::pair < iterator, bool > insert () return /// --- cut --- gdb -q cc1plus (gdb) run pp1.ii 2> /dev/null Program received signal SIGSEGV, Segmentation fault. int_cst_value (x=0x0) at ../../gcc/tree.c:10248 10248 unsigned bits = TYPE_PRECISION (TREE_TYPE (x)); (gdb) bt #0 int_cst_value (x=0x0) at ../../gcc/tree.c:10248 #1 0x00000000005e2ce5 in get_non_default_template_args_count (args=0x7ffff605f800, flags=<optimized out>) at ../../gcc/cp/error.c:181 #2 0x00000000005eaf99 in dump_template_argument_list (args=args@entry=0x7ffff605f800, flags=flags@entry=4) at ../../gcc/cp/error.c:190 #3 0x00000000005e4e10 in dump_decl (t=<optimized out>, flags=<optimized out>) at ../../gcc/cp/error.c:1135 #4 0x00000000005eb689 in dump_typename (t=<optimized out>, flags=<optimized out>) at ../../gcc/cp/error.c:571 #5 0x00000000005eb695 in dump_typename (t=0x7ffff60643f0, flags=4) at ../../gcc/cp/error.c:567 #6 0x00000000005eb35b in dump_template_parms (info=<optimized out>, primary=<optimized out>, flags=4) at ../../gcc/cp/error.c:1647 #7 0x00000000005eb65b in dump_typename (t=0x7ffff6064738, flags=4) at ../../gcc/cp/error.c:569 #8 0x00000000005eb35b in dump_template_parms (info=<optimized out>, primary=<optimized out>, flags=4) at ../../gcc/cp/error.c:1647 #9 0x00000000005e3eb6 in dump_type_prefix (t=<optimized out>, flags=4) at ../../gcc/cp/error.c:783 #10 0x00000000005ede8c in dump_function_decl (t=0x7ffff6052c00, flags=4) at ../../gcc/cp/error.c:1406 #11 0x00000000005ef7b1 in decl_as_string (decl=0x7ffff6052c00, flags=4) at ../../gcc/cp/error.c:2607 #12 0x0000000000696303 in cxx_printable_name_internal (decl=0x7ffff6052c00, v=2, translate=<optimized out>) at ../../gcc/cp/tree.c:1879 #13 0x0000000000a80473 in announce_function (decl=<optimized out>) at ../../gcc/toplev.c:228 #14 0x000000000053aae5 in start_preparsed_function (decl1=0x7ffff6052c00, attrs=<optimized out>, flags=<optimized out>) at ../../gcc/cp/decl.c:13071 #15 0x00000000005fe6cc in cp_parser_late_parsing_for_member (member_function=0x7ffff6052c00, parser=0x7ffff60611b8) at ../../gcc/cp/parser.c:22419 #16 cp_parser_class_specifier_1 (parser=0x7ffff60611b8) at ../../gcc/cp/parser.c:18534 #17 cp_parser_class_specifier (parser=0x7ffff60611b8) at ../../gcc/cp/parser.c:18558 #18 cp_parser_type_specifier (parser=parser@entry=0x7ffff60611b8, flags=flags@entry=1, decl_specs=decl_specs@entry=0x7fffffffd0f0, is_declaration=is_declaration@entry=true, declares_class_or_enum=declares_class_or_enum@entry=0x7fffffffd07c, is_cv_qualifier=is_cv_qualifier@entry=0x7fffffffd07b) at ../../gcc/cp/parser.c:13641 #19 0x000000000061533a in cp_parser_decl_specifier_seq (parser=parser@entry=0x7ffff60611b8, flags=flags@entry=1, decl_specs=decl_specs@entry=0x7fffffffd0f0, declares_class_or_enum=declares_class_or_enum@entry=0x7fffffffd0ec) at ../../gcc/cp/parser.c:10968 #20 0x00000000006193a4 in cp_parser_single_declaration (parser=parser@entry=0x7ffff60611b8, checks=checks@entry=0x0, member_p=member_p@entry=false, explicit_specialization_p=explicit_specialization_p@entry=false, friend_p=friend_p@entry=0x7fffffffd1bf) at ../../gcc/cp/parser.c:22014 #21 0x000000000061c153 in cp_parser_template_declaration_after_export (parser=parser@entry=0x7ffff60611b8, member_p=<optimized out>) at ../../gcc/cp/parser.c:21899 #22 0x000000000061c9c0 in cp_parser_template_declaration (parser=parser@entry=0x7ffff60611b8, member_p=member_p@entry=false) at ../../gcc/cp/parser.c:12190 #23 0x0000000000623aaa in cp_parser_declaration (parser=parser@entry=0x7ffff60611b8) at ../../gcc/cp/parser.c:10377 #24 0x000000000062268e in cp_parser_declaration_seq_opt (parser=parser@entry=0x7ffff60611b8) at ../../gcc/cp/parser.c:10299 #25 0x00000000006228a1 in cp_parser_namespace_body (parser=0x7ffff60611b8) at ../../gcc/cp/parser.c:15116 #26 cp_parser_namespace_definition (parser=0x7ffff60611b8) at ../../gcc/cp/parser.c:15097 #27 0x000000000062392e in cp_parser_declaration (parser=parser@entry=0x7ffff60611b8) at ../../gcc/cp/parser.c:10401 #28 0x000000000062268e in cp_parser_declaration_seq_opt (parser=parser@entry=0x7ffff60611b8) at ../../gcc/cp/parser.c:10299 #29 0x0000000000623f33 in cp_parser_translation_unit (parser=0x7ffff60611b8) at ../../gcc/cp/parser.c:3808 #30 c_parse_file () at ../../gcc/cp/parser.c:28281 #31 0x000000000072bdc5 in c_common_parse_file () at ../../gcc/c-family/c-opts.c:1046 #32 0x0000000000a7fd86 in compile_file () at ../../gcc/toplev.c:543 #33 0x0000000000a81c18 in do_compile () at ../../gcc/toplev.c:1876 #34 toplev_main (argc=2, argv=0x7fffffffd478) at ../../gcc/toplev.c:1952 #35 0x00007ffff6e5e76d in __libc_start_main (main=0x4fc670 <main(int, char**)>, argc=2, ubp_av=0x7fffffffd478, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd468) at libc-start.c:226 #36 0x00000000004fc6e1 in _start ()