This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

reload error in current x86 mainline version


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;
}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]