c++/386: Re: Internal Compiler error

Martin v. Loewis martin@loewis.home.cs.tu-berlin.de
Thu Jul 6 00:46:00 GMT 2000


>Number:         386
>Category:       c++
>Synopsis:       Internal Compiler error
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          analyzed
>Class:          ice-on-legal-code
>Submitter-Id:   net
>Arrival-Date:   Thu Jul 06 00:46:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator:     "Paul C. Lounsbury" <pclouns@cs.ucsb.edu>
>Release:        2.95.2
>Organization:
>Environment:
>Description:
 Original-Message-Id: <200006121729.KAA28586@hercules.cs.ucsb.edu>
 Date: Mon, 12 Jun 2000 10:29:19 -0700 (PDT)
 Reply-To: "Paul C. Lounsbury" <pclouns@cs.ucsb.edu>

 The attached code gives an internal compiler error.
 command line: g++ -Wall -v boggle.C

 using SunOS release 5.7 generic
 Desktop: CDE 1.3.5, OpenWindows Ver. 3.6.1
 Network Domain: cs.ucsb.edu

 //This code returns an internal compiler error when I use:
 //g++ -Wall -v boggle.C
 //on the UC Santa Barbara csil.cs.ucsb.edu Unix server

 /* "boggle.C" : C++ code to draw a randomized Boggle(TM Parker Brothers) game
  *              with each <ENTER> press generating another board
  *              and ending with <ctrl>-d
  */

 #include <iostream>
 #include <cstdlib>
 #include <string>

 class board {
     const string dies[16];
     char brd[16]; 
     int dat[16];

     public:
	 board(const string [], int []);
	 ~board() { delete brd;
		    delete dat;
		    delete dies; }

	 void generate();
	 friend ostream & operator<< (ostream &, const board &);
	 int getR(int[]);
	 char get_let(const string [], int &);
	 const char * get_brd() const { return brd; }
	 const string * get_dies() const { return dies; }
 };

 board::
 board(const string d[], int data[])
     : dies(d), dat(data)
 {
     char board[16] = get_brd();
     board = new char[16];

     for (int i(0); i < 16; ++i){
	 cout << dies[i] << ' ';
	 cout << dat[i] << endl;
     }
 }

 void
 board::
 generate()
 {
     int rand_d(-1);
     for(int p(0); p<16; p++){
	 while((rand_d = getR(data)) != -1) {
	     cout << rand_d;
	     *(brd+p) = get_let(dies, rand_d);
	 }
     }

 }

 ostream &
 operator<<(ostream & os, board & bd)
 {
     return
	 os << bd.get_brd() << " \n";
     /*for(int i(0); i < 16; i++) {
	 if( i == 15 )
	     return os << *(bd.get_brd() +i) << "\n\n\n";
	 else {
	     if( (i+1) % 4 == 0 )
	 return 	os << *(bd.get_brd() +i) << "\n\n";
	     else
	     return os << *(bd.get_brd() +i) << ' ';
	 }
     }
     */
 }

 int
 board::
 getR(int d_a[])
 {
     int r(-1); 
     while( r < 0 || *(d_a+r) != -1 ) { 
	 r = (int)(random() % 16);
	 if( *(d_a+r) == r ){
	     *(d_a+r) = -1;
	     return r;
	 }
     }

     return(-1);
 }

 char
 board::
 get_let( const string brd_arr[], int &die_num )
 {
     int ran = (int)(random() % 6);
     return *(brd_arr[ran] + die_num);
 }

 int
 main(int argc, char *argv[])
 {
     const string d[16] = 
     { "LRYTTE","VTHRWE","EGHWNE","SEOTIS","ANAEEG","IDSYTT",
       "OATTOW","MTOICU","AFPKFS","XLDERI","HCPOAS","ENSIEU",
       "YLDEVR","ZNRNHL","NMIQHU","OBBAOJ"};

     int dat[16] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};

     board *b_p = new board(d, dat);
     b_p->generate();

     delete b_p;
     return 0;
 }

>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the Gcc-prs mailing list