[Bug target/61494] New: -fsignaling-nans not taken into account for x - 0.0
vincent-gcc at vinc17 dot net
gcc-bugzilla@gcc.gnu.org
Fri Jun 13 08:56:00 GMT 2014
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61494
Bug ID: 61494
Summary: -fsignaling-nans not taken into account for x - 0.0
Product: gcc
Version: 4.10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: vincent-gcc at vinc17 dot net
Created attachment 32932
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=32932&action=edit
testcase
On x86_64, x - 0.0 is optimized to x in the asm code when compiling with -O
-fsignaling-nans. This yields an incorrect behavior when x is a signaling NaN.
Note that -fdump-tree-all shows that -fsignaling-nans is taken into account
when the usual optimization is considered; even transf.c.170t.optimized still
has "_2 = x_1(D) - 0.0;" as expected (I suppose).
On PowerPC, the same x - 0.0 optimization is done with GCC 4.7.2 at least.
I've attached a program that triggers the bug (it also does other tests).
$ gcc -O transf.c -o transf -fsignaling-nans -lm
$ ./transf 0x7ff0000000000001
x = [0x7ff0000000000001] = nan (signaling)
Error for x_sub_zero in FE_TONEAREST:
y0 = [0x7ff0000000000001] = nan (signaling)
y1 = [0x7ff8000000000001] = nan
Error for x_sub_zero in FE_TOWARDZERO:
y0 = [0x7ff0000000000001] = nan (signaling)
y1 = [0x7ff8000000000001] = nan
Error for x_sub_zero in FE_DOWNWARD:
y0 = [0x7ff0000000000001] = nan (signaling)
y1 = [0x7ff8000000000001] = nan
Error for x_sub_zero in FE_UPWARD:
y0 = [0x7ff0000000000001] = nan (signaling)
y1 = [0x7ff8000000000001] = nan
More information about the Gcc-bugs
mailing list