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