This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
reload error in current x86 mainline version
- To: gcc-bugs at sourceware dot cygnus dot com
- Subject: reload error in current x86 mainline version
- From: Ulrich Drepper <drepper at cygnus dot com>
- Date: 05 Nov 1999 23:06:09 -0800
- Reply-To: drepper at cygnus dot com (Ulrich Drepper)
The appended code produces using the current mainline version of gcc
on x86 (when optimizing) the following error:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
math/s_ccoshl.i: In function `__ccoshl':
math/s_ccoshl.i:100: Insn does not satisfy its constraints:
(insn 125 460 126 (set (reg/v:XF 3 ebx)
(reg:XF 8 st(0))) 86 {*movxf_1} (nil)
(expr_list:REG_EQUAL (const_double:XF (cc0) 0 [0x0] 0 [0x0] 0 [0x0])
(nil)))
math/s_ccoshl.i:100: Internal compiler error in `reload_cse_simplify_operands', at reload1.c:9186
Please submit a full bug report.
See <URL:http://www.gnu.org/software/gcc/faq.html#bugreport> for instructions.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
---------------. drepper at gnu.org ,-. 1325 Chesapeake Terrace
Ulrich Drepper \ ,-------------------' \ Sunnyvale, CA 94089 USA
Cygnus Solutions `--' drepper at cygnus.com `------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
enum
{
FE_INVALID = 0x01,
__FE_DENORM = 0x02,
FE_DIVBYZERO = 0x04,
FE_OVERFLOW = 0x08,
FE_UNDERFLOW = 0x10,
FE_INEXACT = 0x20
};
enum
{
FP_NAN,
FP_INFINITE,
FP_ZERO,
FP_SUBNORMAL,
FP_NORMAL
};
extern int __fpclassify (double __value) __attribute__ ((__const__));
extern int __fpclassifyf (float __value) __attribute__ ((__const__));
extern int __fpclassifyl (long double __value) __attribute__ ((__const__));
extern long double __ieee754_coshl (long double);
extern long double __ieee754_sinhl (long double);
extern long double __nanl (__const char *__tagb) __attribute__ ((__const__));
extern int feraiseexcept (int __excepts);
extern void __sincosl (long double __x, long double *__sinx, long double *__cosx);
__complex__ long double
__ccoshl (__complex__ long double x)
{
__complex__ long double retval;
int rcls = (sizeof ( __real__ x ) == sizeof (float) ? __fpclassifyf ( __real__ x ) : sizeof ( __real__ x ) == sizeof (double) ? __fpclassify ( __real__ x ) : __fpclassifyl ( __real__ x )) ;
int icls = (sizeof ( __imag__ x ) == sizeof (float) ? __fpclassifyf ( __imag__ x ) : sizeof ( __imag__ x ) == sizeof (double) ? __fpclassify ( __imag__ x ) : __fpclassifyl ( __imag__ x )) ;
if (rcls >= FP_ZERO )
{
if (icls >= FP_ZERO )
{
long double sinh_val = __ieee754_sinhl (__real__ x);
long double cosh_val = __ieee754_coshl (__real__ x);
long double sinix, cosix;
__sincosl (__imag__ x, &sinix, &cosix);
__real__ retval = cosh_val * cosix;
__imag__ retval = sinh_val * sinix;
}
else
{
__imag__ retval = __real__ x == 0.0 ? 0.0 : __nanl ("");
__real__ retval = __nanl ("") + __nanl ("");
if (icls == FP_INFINITE )
feraiseexcept (FE_INVALID );
}
}
else if (rcls == FP_INFINITE )
{
if (icls == FP_ZERO )
{
__real__ retval = (0x1.0p32767L) ;
__imag__ retval = __imag__ x * __copysignl (1.0, __real__ x);
}
else if (icls > FP_ZERO )
{
long double sinix, cosix;
__sincosl (__imag__ x, &sinix, &cosix);
__real__ retval = __copysignl ((0x1.0p32767L) , cosix);
__imag__ retval = (__copysignl ((0x1.0p32767L) , sinix)
* __copysignl (1.0, __real__ x));
}
else
{
__real__ retval = (0x1.0p32767L) ;
__imag__ retval = __nanl ("") + __nanl ("");
if (icls == FP_INFINITE )
feraiseexcept (FE_INVALID );
}
}
else
{
__real__ retval = __nanl ("");
__imag__ retval = __imag__ x == 0.0 ? __imag__ x : __nanl ("");
}
return retval;
}