[Bug c++/56757] New: ICE in int_cst_value/get_non_default_template_args_count on invalid source

ppluzhnikov at google dot com gcc-bugzilla@gcc.gnu.org
Wed Mar 27 21:20:00 GMT 2013


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: unassigned@gcc.gnu.org
        ReportedBy: ppluzhnikov@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 ()



More information about the Gcc-bugs mailing list