[gnu.g++.bug] G++ 1.27 gets fatal signal with typedefs on the sparc

schmidt%siam.ics.uci.edu@ORION.CF.UCI.EDU ("Douglas C. Schmidt") (10/01/88)

Hi,

  G++ 1.27 gets a segmentation violation for the following file.  This file compiles
and executes correctly with AT&T CC 1.2, producing an output of 

foo101

I think g++ is having problems with typedefs and classes.

Here's the code:
----------------------------------------
#include <stream.h>

/**********************************************************************/

typedef class Machine {

private:
   char   *Machine_Name;
   double  Clock_Speed;
   BOOLEAN Float_Chip;
   
public:

   Machine(char *Name,double Clock_Speed,BOOLEAN FPC): 
      Machine_Name(Name),Clock_Speed(Clock_Speed),Float_Chip(FPC) {
   }
   
   char *Name(void) {
      return(Machine_Name);
   }

   double Return_Clock_Speed(void) {
      return(Clock_Speed);
   }
   
   BOOLEAN Has_Float_Chip(void) {
      return(Float_Chip);
   }

   virtual char *CPU_Type() {
      return("No default");
   }

} MACHINE, *MACHINE_PTR;

main(int,char *argv[]) {
   MACHINE_PTR Foo = new MACHINE("foo",10.0,TRUE);
   cout << Foo->Name() << Foo->Return_Clock_Speed() << Foo->Has_Float_Chip() << "\n";
}
----------------------------------------

Here's the diagnostic:

Script started on Fri Sep 30 15:13:35 1988
[~/c++ ] [/cd/ua/schmidt/c++] 
..: g++ -v bug.C  
g++ version 1.27.0 
 echo use .cc filename extension! 
use .cc filename extension! 
 /usr/public/lib/g++/gcc-cpp+ -v -I/cd/ua/schmidt/include/ -undef -D__GNU__ -D__GNUG__ -Dsparc -Dsun -Dunix bug.C /tmp/cca02014.cpp 
GNU CPP version 1.27.0 
 /usr/public/lib/g++/gcc-c++ /tmp/cca02014.cpp -quiet -dumpbase bug.C -fchar-charconst -noreg -version -o /tmp/cca02014.s 
GNU C++ version 1.27.0 (sparc) compiled by GNU C version 1.28. 
 
bug.C:37: Segmentation violation 
/usr/public/g++: Program c++ got fatal signal 11. 

script done on Fri Sep 30 15:16:31 1988