[gnu.g++.help] BUG in g++ 1.37 - multiple inheritance

andru@CONCERTO.LCS.MIT.EDU (Andrew Myers) (05/10/91)

The following program causes an assertion failure.

Failed assertion `basetype == ASSOC_TYPE (vbases)' at line 2310 of `cplus-search
.c'.
g++: Program cc1plus got fatal signal 4.

---------------------------------------------------------------------------
gcc version 1.37.2 beta (based on GCC 1.37) OSF 1.9.2.14 Ultrix Dec Mips Apr 29 1991
 /usr/local/lib/g++-1.37.1-OSF/gcc-cpp -+ -v -undef -D__GNUC__ -D__GNUG__ -D__cplusplus -Dultrix -Dbsd4_2 -DMIPSEL -Dhost_mips -Dmips -Dunix -DR3000 -DLANGUAGE_C -DSYSTYPE_BSD -D__ultrix__ -D__bsd4_2__ -D__MIPSEL__ -D__host_mips__ -D__mips__ -D__unix__ -D__R3000__ -D__LANGUAGE_C__ -D__SYSTYPE_BSD__ -D__OPTIMIZE__ foo.C /usr/tmp/cca00914.cpp
GNU CPP version 1.37.1 OSF 1.9.2.14 Ultrix Dec Mips [unknown date]
 /usr/local/lib/g++-1.37.1-OSF/gcc-cc1plus /usr/tmp/cca00914.cpp -mgpOPT -G 8 -quiet -dumpbase foo.C -O -version -o /usr/tmp/cca00914.s
GNU C++ version 1.37.2 beta (based on GCC 1.37) OSF 1.9.2.14 Ultrix Dec Mips Apr 29 1991 compiled by GNU C version 1.37.1.
default target switches: -mmips-as -mnofixed-ovfl -mG0 -mG1
Failed assertion `basetype == ASSOC_TYPE (vbases)' at line 2310 of `cplus-search.c'.
g++: Program cc1plus got fatal signal 4.
---------------------------------------------------------------------------

struct A {
    virtual void method();
    int a;
};

struct B : virtual public A {
    virtual void method();
    int b;
};

struct C : virtual public A {
    virtual void method();
    int c;
};

struct D : virtual public B {
    int d;
    virtual void method();
};

struct E : virtual public C {
    virtual void method();
    int e;
};

struct F : virtual public D,C {
    virtual void method();
    int b;
};

struct G : virtual public B,E {
    virtual void method();
    int g;
};

struct H : virtual public F,G {
    virtual void method();
    int h;
};