http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51446
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2011-12-08 Component|tree-optimization |middle-end Ever Confirmed|0 |1 --- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-12-08 10:10:17 UTC --- (In reply to comment #3) > I've looked through the code in real.c a bit (and perhaps the component of > this > bug report should be changed). > > It appears that do_divide, when given 0.0/0.0, calls get_canonical_qnan with > sign=0 (line 816 in real.c), but divsd actually returns a qnan with sign bit = > 1. > > Similarly, do_add when given Inf - Inf, calls get_canonical_qnan with sign bit > = 0 (line 574 of real.c), while subsd returns a qnan with sign bit = 1. > > It seems that the sign bit in this situation should be target-dependent if you > want the constants to match what the actual instructions will provide. Interesting. Does IEEE say anything about the sign of the qnan? Do the architecture manuals say anything about the sign of the qnan?