[gnu.gcc.bug] Bug: GCC 1.34 -O on Sun 3, Sun Unix 3.2

mcgrath%paris.Berkeley.EDU@GINGER.BERKELEY.EDU (Roland McGrath) (04/24/89)

The following file, when given to cc1 -O, produces an `abort' call in
expand_expr with GCC 1.34 on a Sun 3 (68020), Sun Unix 3.2.

# 1 "modf.c"
# 1 "modf-68881.c"
# 1 "../ansidecl.h"
# 90 "../ansidecl.h"
# 18 "modf-68881.c"
# 1 "./math.h"
# 1 "../errno.h"
# 1 "/usr/include/errno.h"
# 1 "/usr/include/sys/errno.h"
# 7 "/usr/include/errno.h"
extern int errno;
# 28 "../errno.h"
extern volatile  int errno;
# 28 "./math.h"
# 1 "../float.h"
# 1 "../__fl_68881.h"
# 82 "../__fl_68881.h"
# 49 "../float.h"
# 33 "./math.h"
# 1 "./__math.h"
# 1 "./__math_68881.h"
# 76 "./__math_68881.h"
# 89 "./__math_68881.h"
# 128 "./__math_68881.h"
# 1 "./__math.h"
# 37 "./math.h"
extern 	const   double 	acos  (double __x) ;
extern 	const   double 	asin  (double __x) ;
extern 	const   double 	atan  (double __x) ;
extern 	const   double 	atan2  (double __y, double __x) ;
extern 	const   double 	cos  (double __x) ;
extern 	const   double 	sin  (double __x) ;
extern 	const   double 	tan  (double __x) ;
extern 	const   double 	cosh  (double __x) ;
extern 	const   double 	sinh  (double __x) ;
extern 	const   double 	tanh  (double __x) ;
extern 	const   double 	exp  (double __x) ;
extern double 	frexp  (double __value, int *__exp) ;
extern 	const   double 	ldexp  (double __x, int __exp) ;
extern 	const   double 	log  (double __x) ;
extern 	const   double 	log10  (double __x) ;
extern double 	modf  (double __value, double *__iptr) ;
extern 	const   double 	pow  (double __x, double __y) ;
extern 	const   double 	sqrt  (double __x) ;
extern 	const   double 	ceil  (double __x) ;
extern 	const   double 	fabs  (double __x) ;
extern 	const   double 	floor  (double __x) ;
extern 	const   double 	fmod  (double __x, double __y) ;
# 179 "./math.h"
# 20 "modf-68881.c"
double
modf( double value 	,  double *iptr) 
{
  return (
	  ( {
	    register const double __modf_x = (value);
	    register const double __modf_int =
	      ( {
		register double __result;
		asm("f" "intrz"  "%.x %1, %0" : "=f" (__result) :
		    "f" ( __modf_x ) );
		__result;
	      } )  ;
	    *(double *) ( iptr) = __modf_int;
	    __modf_x - __modf_int;
	  } )
	  );
}
# 1 "modf.c"