[gnu.gcc.bug] Final sequent symmetry bug

schmidt@BONNIE.ICS.UCI.EDU ("Douglas C. Schmidt") (11/26/88)

Bug Report for GCC:
-------------------
Problem :  The following program causes a fatal signal on the 386
	 

1.) Version : gcc 1.31
-----------

2.) Input Program :
-----------------

char *_new(); char _delete(); char *_vec_new(); char _vec_delete();


struct _iobuf {	
int __iobuf__cnt ;
unsigned char *__iobuf__ptr ;
unsigned char *__iobuf__base ;
int __iobuf__bufsiz ;
short __iobuf__flag ;
char __iobuf__file ;
};
extern struct _iobuf _iob [];
extern int _flsbuf ();
extern int _filbuf ();
extern struct _iobuf *fopen ();
extern struct _iobuf *fdopen ();
extern struct _iobuf *freopen ();
extern long ftell ();
extern char *fgets ();
extern char *gets ();
extern int puts ();
extern int fputs ();
extern int printf ();
extern int fprintf ();
extern int sprintf ();
extern int scanf ();
extern int fscanf ();
extern int sscanf ();
extern int fread ();
extern int fwrite ();
extern int fclose ();
extern int fflush ();
extern int fseek ();
extern char rewind ();
extern int getw ();
extern int fgetc ();
extern struct _iobuf *popen ();
extern int pclose ();
extern int putw ();
extern int fputc ();
extern char setbuf ();
extern int ungetc ();
extern char exit ();
extern int abort ();
extern int atoi ();
extern double atof ();
extern long atol ();
extern struct _iobuf *tmpfile ();
extern char *ctermid ();
extern char *cuserid ();
extern char *tempnam ();
extern char *tmpnam ();
extern char perror ();
extern int errno ;
extern char *sys_errlist [];
extern int sys_nerr ;
extern unsigned char *_bufendtab [];
struct streambuf {	/* sizeof streambuf == 26 */
char *_streambuf_base ;
char *_streambuf_pptr ;
char *_streambuf_gptr ;
char *_streambuf_eptr ;
char _streambuf_alloc ;
struct _iobuf *_streambuf_fp ;
int (**_streambuf__vptr )();
};
int _streambuf_overflow ();
int _streambuf_underflow ();
static int (*streambuf__vtbl[])() = {
(int(*)()) _streambuf_overflow , 
(int(*)()) _streambuf_underflow , 0};
int _streambuf_doallocate ();
extern int close ();
struct filebuf {	/* sizeof filebuf == 32 */
char *_streambuf_base ;
char *_streambuf_pptr ;
char *_streambuf_gptr ;
char *_streambuf_eptr ;
char _streambuf_alloc ;
struct _iobuf *_streambuf_fp ;
int (**_streambuf__vptr )();
int _filebuf_fd ;
char _filebuf_opened ;
};
int _filebuf_overflow ();
int _filebuf_underflow ();
static int (*filebuf__vtbl[])() = {
(int(*)()) _filebuf_overflow , 
(int(*)()) _filebuf_underflow , 0};
struct filebuf *_filebuf_open ();
struct circbuf {	/* sizeof circbuf == 26 */
char *_streambuf_base ;
char *_streambuf_pptr ;
char *_streambuf_gptr ;
char *_streambuf_eptr ;
char _streambuf_alloc ;
struct _iobuf *_streambuf_fp ;
int (**_streambuf__vptr )();
};
int _circbuf_overflow ();
int _circbuf_underflow ();
static int (*circbuf__vtbl[])() = {
(int(*)()) _circbuf_overflow , 
(int(*)()) _circbuf_underflow , 0};
struct whitespace {	/* sizeof whitespace == 2 */
char _dummy; };
extern char *oct ();
extern char *dec ();
extern char *hex ();
extern char *chr ();
extern char *str ();
extern char *form ();
struct ostream {	/* sizeof ostream == 6 */
struct streambuf *_ostream_bp ;
short _ostream_state ;
};
struct ostream *_ostream__lshiftFPC__ ();
struct ostream *_ostream__lshiftFUL__ ();
struct ostream *_ostream__lshiftFL__ ();
struct ostream *_ostream__lshiftFD__ ();
struct ostream *_ostream__lshiftFRCstreambuf___ ();
struct ostream *_ostream__lshiftFRCwhitespace___ ();
struct ostream *_ostream__lshiftFRCcommon___ ();
struct ostream *_ostream_put ();
struct istream {	/* sizeof istream == 12 */
struct streambuf *_istream_bp ;
struct ostream *_istream_tied_to ;
char _istream_skipws ;
short _istream_state ;
};
struct istream *_istream__rshiftFPC__ ();
struct istream *_istream__rshiftFRC__ ();
struct istream *_istream__rshiftFRS__ ();
struct istream *_istream__rshiftFRI__ ();
struct istream *_istream__rshiftFRL__ ();
struct istream *_istream__rshiftFRF__ ();
struct istream *_istream__rshiftFRD__ ();
struct istream *_istream__rshiftFRCstreambuf___ ();
struct istream *_istream__rshiftFRCwhitespace___ ();
struct istream *_istream__rshiftFRCcommon___ ();
struct istream *_istream_getFPC_I_I__ ();
struct istream *_istream_getFRCstreambuf__I__ ();
struct istream *_istream_putback ();
extern char eatwhite ();
extern struct istream cin ;
extern struct ostream cout ;
extern struct ostream cerr ;
extern struct whitespace WS ;
extern int errno ;
extern int errno ;
extern int signgam ;
extern int abs ();
extern double atof ();
extern double frexp ();
extern double ldexp ();
extern double modf ();
extern double j0 ();
extern double j1 ();
extern double jn ();
extern double y0 ();
extern double y1 ();
extern double yn ();
extern double erf ();
extern double erfc ();
extern double exp ();
extern double log ();
extern double log10 ();
extern double pow ();
extern double sqrt ();
extern double floor ();
extern double ceil ();
extern double fmod ();
extern double fabs ();
extern double gamma ();
extern double hypot ();
extern int matherr ();
extern double sinh ();
extern double cosh ();
extern double tanh ();
extern double sin ();
extern double cos ();
extern double tan ();
extern double asin ();
extern double acos ();
extern double atan ();
extern double atan2 ();
struct exception {	/* sizeof exception == 32 */
int _exception_type ;
char *_exception_name ;
double _exception_arg1 ;
double _exception_arg2 ;
double _exception_retval ;
};
struct complex {	/* sizeof complex == 16 */
double _complex_re ;
double _complex_im ;
};
char _complex__asplus ();
char _complex__asminus ();
char _complex__asmul ();
char _complex__asdiv ();
extern int _neFCcomplex__Ccomplex___ ();
extern int _eqFCcomplex__Ccomplex___ ();
extern struct complex _divFCcomplex__Ccomplex___ ();
extern struct complex _mulFCcomplex__Ccomplex___ ();
extern struct complex _minusFCcomplex__Ccomplex___ ();
extern struct complex _minusFCcomplex___ ();
extern struct complex _plusFCcomplex__Ccomplex___ ();
extern struct complex sqrtFCcomplex___ ();
extern struct complex sinhFCcomplex___ ();
extern struct complex sinFCcomplex___ ();
extern struct complex polar ();
extern struct complex powFCcomplex__Ccomplex___ ();
extern struct complex powFCcomplex__D__ ();
extern struct complex powFCcomplex__I__ ();
extern struct complex powFD_Ccomplex___ ();
extern struct complex logFCcomplex___ ();
extern struct complex expFCcomplex___ ();
extern struct complex coshFCcomplex___ ();
extern struct complex cosFCcomplex___ ();
extern struct complex conj ();
extern double arg ();
extern double norm ();
extern double absFCcomplex___ ();
extern double imag ();
extern double real ();
struct ostream *_lshiftFRCostream__Ccomplex___ ();
struct istream *_rshiftFRCistream__RCcomplex___ ();
extern int errno ;
static struct complex complex_zero ;
struct c_exception {	/* sizeof c_exception == 56 */
int _c_exception_type ;
char *_c_exception_name ;
struct complex _c_exception_arg1 ;
struct complex _c_exception_arg2 ;
struct complex _c_exception_retval ;
};
extern struct complex logFCcomplex___ ();
extern struct complex coshFCcomplex___ ();
extern struct complex sinhFCcomplex___ ();
extern struct complex expFCcomplex___ ();
extern int complex_error ();
extern struct complex powFD_Ccomplex___ (_au0_base , _au0_z )double _au0_base ;
struct complex _au0_z ;
{ 
struct complex _au1_y ;
( ( ((& _au1_y )-> _complex_re = 0.0 ), ( ((& _au1_y )-> _complex_im = 0.0 ), 
(((& _au1_y )))) )
) ;
if (_au0_base == 0 )return _au1_y ;
if (0 < _au0_base ){ 
double _au2_lb ;
_au2_lb = log ( _au0_base ) ;
_au1_y . _complex_re = (_au0_z . _complex_re * _au2_lb );
_au1_y . _complex_im = (_au0_z . _complex_im * _au2_lb );
return expFCcomplex___ ( _au1_y ) ;
}
{ 
struct complex _au0__V6 ;
return powFCcomplex__Ccomplex___ ( ( ( ( ((& _au0__V6 )-> _complex_re = 
_au0_base ), ( ((& _au0__V6 )-> _complex_im = 0.0 ),
(((& _au0__V6 )))) ) ) , _au0__V6 ) , _au0_z ) ;
} }
;
extern struct complex powFCcomplex__I__ (_au0_a , _au0_n )struct complex _au0_a ;
int _au0_n ;
{ 
struct complex _au1_x ;
struct complex _au1_p ;
( ( ((& _au1_x )-> _complex_re = 0.0 ), ( ((& _au1_x )-> _complex_im = 0.0 ), 
(((& _au1_x )))) )
) ;
( ( ((& _au1_p )-> _complex_re = ((double )1 )), ( ((& _au1_p )-> _complex_im = 
0.0 ), (((& _au1_p ))))
) ) ;
if (_au0_n == 0 )return _au1_p ;
if (_au0_n < 0 ){ 
_au0_n = (- _au0_n );
{ 
struct complex _au0__V7 ;
_au1_x = _divFCcomplex__Ccomplex___ ( ( ( ( ((& _au0__V7 )-> _complex_re = 
((double )1 )), ( ((& _au0__V7 )-> _complex_im =
0.0 ), (((& _au0__V7 )))) ) ) , _au0__V7 ) , _au0_a ) ;
} }
else 
_au1_x = _au0_a ;
for(;;) { 
if (_au0_n & 01 ){ 
register double _au3_t ;
_au3_t = ((_au1_p . _complex_re * _au1_x . _complex_re )- 
(_au1_p . _complex_im * _au1_x . _complex_im ));
_au1_p . _complex_im = ((_au1_p . _complex_re * _au1_x . _complex_im )+ 
(_au1_p . _complex_im * _au1_x . _complex_re ));
_au1_p . _complex_re = _au3_t ;
}
if (_au0_n >>= 1 ){ 
register double _au3_t ;
_au3_t = ((_au1_x . _complex_re * _au1_x . _complex_re )- 
(_au1_x . _complex_im * _au1_x . _complex_im ));
_au1_x . _complex_im = ((2 * _au1_x . _complex_re )* _au1_x . _complex_im );
_au1_x . _complex_re = _au3_t ;
}
else break ;
}
return _au1_p ;
}
;
extern struct complex powFCcomplex__D__ (_au0_a , _au0_b )struct complex _au0_a ;
double _au0_b ;
{ 
register double _au1_logr ;
register double _au1_logi ;
register double _au1_x ;
register double _au1_y ;
double _au1__Xr__ctor_complex ;
double _au1__Xi__ctor_complex ;
_au1_logr = log ( absFCcomplex___ ( _au0_a ) ) ;
_au1_logi = atan2 ( _au0_a . _complex_im , _au0_a . _complex_re ) ;
_au1_x = exp ( _au0_b * _au1_logr ) ;
_au1_y = (_au0_b * _au1_logi );
{ 
struct complex _au0__V8 ;
return ( ( (_au1__Xr__ctor_complex = (_au1_x * cos ( _au1_y ) )), 
( (_au1__Xi__ctor_complex = (_au1_x * sin ( _au1_y ) )),
( ( ((& _au0__V8 )-> _complex_re = _au1__Xr__ctor_complex ),
 ( ((& _au0__V8 )-> _complex_im = _au1__Xi__ctor_complex ), (((& _au0__V8 )))) )
) ) ) , _au0__V8 ) ;
} }
;
extern struct complex powFCcomplex__Ccomplex___ (_au0_base , _au0_sup )
struct complex _au0_base ;
struct complex _au0_sup ;
{ 
struct complex _au1_result ;
register double _au1_logr ;
register double _au1_logi ;
register double _au1_xx ;
register double _au1_yy ;
double _au1_a ;
( ( ((& _au1_result )-> _complex_re = 0.0 ), ( ((& _au1_result )-> _complex_im =
 0.0 ), (((& _au1_result )))) )
) ;
_au1_a = absFCcomplex___ ( _au0_base ) ;
if (_au1_a == 0 )return _au1_result ;
_au1_logr = log ( _au1_a ) ;
_au1_logi = atan2 ( _au0_base . _complex_im , _au0_base . _complex_re ) ;
_au1_xx = exp ( (_au1_logr * _au0_sup . _complex_re )- 
(_au1_logi * _au0_sup . _complex_im )) ;
_au1_yy = ((_au1_logr * _au0_sup . _complex_im )+ 
(_au1_logi * _au0_sup . _complex_re ));
_au1_result . _complex_re = (_au1_xx * cos ( _au1_yy ) );
_au1_result . _complex_im = (_au1_xx * sin ( _au1_yy ) );
return _au1_result ;
}
;
extern char _STIpow_c_ ()
{ ( ( (((struct complex *)(& complex_zero ))-> _complex_re = ((double )0 )), 
( (((struct complex *)(&
complex_zero ))-> _complex_im = ((double )0 )), 
((((struct complex *)(& complex_zero ))))) ) ) ;
}
;
/* the end */

3.) Command Used : gcc -v 
----------------

4.) Files used :
--------------
   config.gcc sequent-i386

5.) Machine(s) used :
-------------------
		Sequent Symmetry    DYNIX (TM)V3 (BSD 4.3 features)

6.) Compiler diagnostics :
------------------------

gcc version 1.31
 /usr/public/lib/gcc/gcc-cpp -v -undef -D__GNU__ -D__GNUC__ -Dunix
-Di386 -Dsequent pow-bug.1.28.c /tmp/cc013523.cpp

GNU CPP version 1.31
 /usr/public/lib/gcc/gcc-cc1 /tmp/cc013523.cpp -quiet -dumpbase
pow-bug.1.28.c -version -o /tmp/cc013523.s

gcc: Program cc1 got fatal signal 4.