http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57948

            Bug ID: 57948
           Summary: internal compiler error: in initialize_reference, at
                    cp/call.c:9285
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: cas43 at cs dot stanford.edu

With this input:

struct Base {   };
struct Derived : Base
{
    struct Derived2 : Base
    {
        struct ConvertibleToBothDerivedRef
        {
            operator Derived&();
            operator Derived2&();
            void bind_lvalue_to_conv_lvalue_ambig(ConvertibleToBothDerivedRef
both)
            {
                Base &br1 = both;
            }
        };
    };
};


compiled like this:  g++ prog.cpp


I get this output:

prog.cpp: In member function ‘void
Derived::Derived2::ConvertibleToBothDerivedRef::bind_lvalue_to_conv_lvalue_ambig(Derived::Derived2::ConvertibleToBothDerivedRef)’:
prog.cpp:12:29: error: conversion from
‘Derived::Derived2::ConvertibleToBothDerivedRef’ to ‘Base&’ is ambiguous
                 Base &br1 = both;
                             ^
prog.cpp:10:18: note: candidates are:
             void bind_lvalue_to_conv_lvalue_ambig(ConvertibleToBothDerivedRef
both)
                  ^
prog.cpp:9:13: note: Derived::Derived2::ConvertibleToBothDerivedRef::operator
Derived::Derived2&()
             operator Derived2&();
             ^
prog.cpp:8:13: note: Derived::Derived2::ConvertibleToBothDerivedRef::operator
Derived&()
             operator Derived&();
             ^
prog.cpp:12:29: internal compiler error: in initialize_reference, at
cp/call.c:9285
                 Base &br1 = both;
                             ^
0x52061e initialize_reference(tree_node*, tree_node*, int, int)
    ../../s-4.9/gcc/cp/call.c:9285
0x52d9a4 grok_reference_init
    ../../s-4.9/gcc/cp/decl.c:4762
0x52d9a4 check_initializer
    ../../s-4.9/gcc/cp/decl.c:5630
0x54006d cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
    ../../s-4.9/gcc/cp/decl.c:6349
0x6260fd cp_parser_init_declarator
    ../../s-4.9/gcc/cp/parser.c:16527
0x62673e cp_parser_simple_declaration
    ../../s-4.9/gcc/cp/parser.c:10946
0x6285a0 cp_parser_block_declaration
    ../../s-4.9/gcc/cp/parser.c:10827
0x6296a0 cp_parser_declaration_statement
    ../../s-4.9/gcc/cp/parser.c:10471
0x612527 cp_parser_statement
    ../../s-4.9/gcc/cp/parser.c:9229
0x61382e cp_parser_statement_seq_opt
    ../../s-4.9/gcc/cp/parser.c:9509
0x613976 cp_parser_compound_statement
    ../../s-4.9/gcc/cp/parser.c:9463
0x624733 cp_parser_function_body
    ../../s-4.9/gcc/cp/parser.c:18257
0x624733 cp_parser_ctor_initializer_opt_and_function_body
    ../../s-4.9/gcc/cp/parser.c:18293
0x62578f cp_parser_function_definition_after_declarator
    ../../s-4.9/gcc/cp/parser.c:22271
0x60b49c cp_parser_late_parsing_for_member
    ../../s-4.9/gcc/cp/parser.c:22923
0x60b49c cp_parser_class_specifier_1
    ../../s-4.9/gcc/cp/parser.c:19016
0x60d610 cp_parser_class_specifier
    ../../s-4.9/gcc/cp/parser.c:19040
0x60d610 cp_parser_type_specifier
    ../../s-4.9/gcc/cp/parser.c:14042
0x622ad9 cp_parser_decl_specifier_seq
    ../../s-4.9/gcc/cp/parser.c:11288
0x626599 cp_parser_simple_declaration
    ../../s-4.9/gcc/cp/parser.c:10878
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.


Compiler version:

Using built-in specs.
COLLECT_GCC=/home/craig/new-gcc/i-4.9/bin/g++
COLLECT_LTO_WRAPPER=/home/craig/new-gcc/i-4.9/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../s-4.9/configure --prefix=/home/craig/new-gcc/i-4.9
Thread model: posix
gcc version 4.9.0 20130718 (experimental) (GCC)

Reply via email to