vaughan%cadillac.cad.mcc.com@MCC.COM (Paul Vaughan) (01/23/90)
The following source causes g++-1.36.4- to segv. This is a new bug--older versions can compile this cleanly. Fortunately, I have a work around (see below). class Model; class Simulator; class SimUnit { public: Model *model; }; class Model : public SimUnit { }; class Object { }; class NamedObject: public Object { }; class NameSpaceTable; class Entity: public NamedObject { }; class Behavior : public virtual Entity { }; class PrimitiveBehavior : public Behavior { }; class ModelBehavior : public PrimitiveBehavior { }; class PawsNode : public SimUnit { }; class IPawsNode : public PrimitiveBehavior { }; class IModel : public ModelBehavior, public Model { public: IModel(); }; IModel::IModel() { &model; // line 46, segv here } [2.633]puma) g++-1.36.3.test -v cpp.cc g++ version 1.36.4- (based on GCC 1.36.92) /usr/local/gnu/1.36.3/test-lib/gcc-cpp -+ -v -undef -D__GNUC__ -D__GNUG__ -D__cplusplus -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__HAVE_68881__ -Dmc68020 cpp.cc /usr/tmp/cca12625.cpp GNU CPP version 1.36.92 /usr/local/gnu/1.36.3/test-lib/gcc-cc1plus /usr/tmp/cca12625.cpp -quiet -dumpbase cpp.cc -version -o /usr/tmp/cca12625.s GNU C++ version 1.36.4- (based on GCC 1.36.92) (68k, MIT syntax) compiled by GNU C version 1.36.92. default target switches: -m68020 -mc68020 -m68881 -mbitfield cpp.cc: In method IModel::IModel (): cpp.cc:46: Segmentation violation g++-1.36.3.test: Program cc1plus got fatal signal 11. I can get around this by using IModel::IModel() { &(((SimUnit*)this)->model); }