[gnu.g++.bug] 1.36.4- segv with pure virt fn & virt base class

tuck@zeta.cs.unc.edu (Russ Tuck) (01/24/90)

The following set of declarations causes g++ to die with a fatal signal.
I believe it is legal code.  Cfront 2.0 compiles it without comment.

class base { public: virtual int concrete() = 0; };

class deriv1 : virtual public base { public: virtual int concrete() = 0; };

class deriv2 : virtual public deriv1 {
 public: virtual int concrete() = 0;
}; // line 7, segv

The compile command and output follow.

g++ -c -v g++bug.C
g++ version 1.36.4- (based on GCC 1.36.92)
 /usr/softlab/contrib/src/g++-1.36.4-/sparc_sunos/lib/sparc_sunos/gcc-cpp -+ -v -undef -D__GNUC__ -D__GNUG__ -D__cplusplus -Dsparc -Dsun -Dunix -D__sparc__ -D__s\un__ -D__unix__ g++bug.C /usr/tmp/cca21257.cpp
GNU CPP version 1.36
 /usr/softlab/contrib/src/g++-1.36.4-/sparc_sunos/lib/sparc_sunos/gcc-cc1plus /usr/tmp/cca21257.cpp -quiet -dumpbase g++bug.C -version -o /usr/tmp/cca21257.s
GNU C++ version 1.36.4- (based on GCC 1.36.92) (sparc) compiled by GNU C version 1.36.
default target switches: -mfpu -mepilogue
g++bug.C:7: Segmentation violation
g++: Program cc1plus got fatal signal 11.

This is on a Sun-4/280 running SunOS 4.0.3.  
g++ 1.36.4- came from labrea.stanford.edu:~ftp/pub/gnu/g++.xtar.Z on 1/22/90.

Russ Tuck		               tuck@cs.unc.edu
UNC Dept. of Computer Science          ...!mcnc!unc!tuck
CB 3175, Sitterson Hall
Chapel Hill, NC 27599-3175, USA        (919) 962-1755 or 962-1700