Starting from file 20040208-2.c provided in the gcc testsuite I've obtained an
equivalent version performing an abort.
By changing the following two lines:
Internal = x_0 * 0x0.8000000000000000000000000000000000000000p+2L;
x = Internal;
in
x = x_0 * 0x0.8000000000000000000000000000000000000000p+2L;
everything work well.
I've obtained the same bug on gcc 2.96, 3.3.4, 3.4.3 and 4.0.0.
--
Summary: long double incorrect result
Product: gcc
Version: 3.4.3
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ferrandi at elet dot polimi dot it
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i386-redhat-linux
GCC host triplet: i386-redhat-linux
GCC target triplet: i386-redhat-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21737