[Bug target/7285] [ia64] unsigned-to-floating conversion not spec conformant

zack at codesourcery dot com gcc-bugzilla@gcc.gnu.org
Thu Mar 18 10:08:00 GMT 2004


------- Additional Comments From zack at codesourcery dot com  2004-03-18 10:08 -------
Subject: Re:  [ia64] unsigned-to-floating conversion not
 spec conformant


Thanks for the additional detail, but I am still not seeing exactly
what should happen.  (For the record, I used the HP compiler as a
reference because it's the non-GCC compiler for IA64 that I have
convenient access to; I wasn't expecting its output necessarily to be
correct.)

This code

static __float80 floatunsdixf(unsigned long long x) { return x; }

void main(void)
{ 
  __float80 v = floatunsdixf(12);
  printf("%qf\n", v); 
  return 0; 
}

does _not_ trigger a denormal exception when executed on ia64-hpux.
(On this target "long double" is a software-emulated 128-bit type, you
have to use __float80 to get IEEE extended.)  I determined this by
running the program under GDB, stepi-ing through floatunsdixf(), and
printing the value of ar40 (= ar.fpsr) at each step.  What gives?  Did
I pick a bad test constant or something?

zw


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7285



More information about the Gcc-bugs mailing list