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.