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]

[again] (a <= 0.5) and (a > 0.5) both fail with intervening output



It occurred to me that in my previous bug report, I forgot to mention
which compiler, which system, etc. Sorry about that. It is 
egcs 1.1.1 on Debian/slink (Debian package version   2.91.60-5 )
on a (dual) Pentium II.

When compiled -O, on a pentium the following produces no output whatsoever,
i.e. both (at0 <=0.5)  and (at0 > 0.5) test false.
The problem is that norm(u0) evaluates to 0.5 + 5.14996e-17
(in a register), so the first test fails. But then because of the 
possible intervening output, at0 is written to memory and truncated
to 64 bits, so that it becomes exactly 0.5, and so the second test
fails as well.
If at0 is declared as volatile double at0, then at0 is written to memory
and read back again before the first test, so then (a <= 0.5) tests true.

I don't know whether this classifies as a bug or as 'the usual trouble
with floating point numbers'; in any case, it was a nasty surprise to me.

=========================================================================
// testfwhm.h -- triggers optimizing bug

#include <math.h>
#include <iostream>
#include <complex>

int main() {

  // generate a number whose norm is _exactly_ 0.5:
  double T1 = 5 / sqrt(2 * log(2));
  double z = 2.5 / T1;
  complex<double> u0 = exp(complex<double>(-z*z, 7)); // norm(u0) == 0.5 !!

#ifdef VOLATILE
  volatile double at0;
#else
   double at0;
#endif
   at0 = norm(u0);
   if (at0 <= 0.5) cout << "smaller or equal" <<endl;
   if (at0 > 0.5) cout << "larger" <<endl;
  return 0;
}

This was complied with g++ -v --save-temps -O  testfwhm.cc :
==========================================================
Reading specs from /usr/lib/gcc-lib/i486-linux/egcs-2.91.60/specs
gcc version egcs-2.91.60 Debian 2.1 (egcs-1.1.1 release)
 /usr/lib/gcc-lib/i486-linux/egcs-2.91.60/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=91 -D__ELF__ -Dunix -Di386 -D__i386__ -Dlinux -D__ELF__ -D__unix__ -D__i386__ -D__i386__ -D__linux__ -D__unix -D__i386 -D__linux -Asystem(posix) -D__EXCEPTIONS -D__OPTIMIZE__ -Asystem(unix) -Acpu(i386) -Amachine(i386) -Di386 -D__i386 -D__i386__ -Di486 -D__i486 -D__i486__ testfwhm.cc /tmp/cciu47Jb.ii
GNU CPP version egcs-2.91.60 Debian 2.1 (egcs-1.1.1 release) (i386 Linux/ELF)
#include "..." search starts here:
#include <...> search starts here:
 /usr/include/g++-2
 /usr/local/include
 /usr/lib/gcc-lib/i486-linux/egcs-2.91.60/include
 /usr/include
End of search list.
 /usr/lib/gcc-lib/i486-linux/egcs-2.91.60/cc1plus /tmp/cciu47Jb.ii -quiet -dumpbase testfwhm.cc -O -version -o /tmp/ccAHMigh.s
GNU C++ version egcs-2.91.60 Debian 2.1 (egcs-1.1.1 release) (i486-linux) compiled by GNU C version egcs-2.91.60 Debian 2.1 (egcs-1.1.1 release).
 as -V -Qy -o /tmp/cc9WBczD.o /tmp/ccAHMigh.s
GNU assembler version 2.9.1 (i486-linux), using BFD version 2.9.1.0.19
 /usr/lib/gcc-lib/i486-linux/egcs-2.91.60/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/gcc-lib/i486-linux/egcs-2.91.60/crtbegin.o -L/usr/lib/gcc-lib/i486-linux/egcs-2.91.60 /tmp/cc9WBczD.o -lstdc++ -lm -lgcc -lc -lgcc /usr/lib/gcc-lib/i486-linux/egcs-2.91.60/crtend.o /usr/lib/crtn.o

=========================================================================

The difference in the generated assembler code (between
volatile -- volatile double at0 and nonvolatile -- double at0) is:

=========================================================================
- --- volatile/testfwhm.s	Thu May  6 22:25:55 1999
+++ nonvolatile/testfwhm.s	Thu May  6 22:21:26 1999
@@ -63,33 +63,31 @@
 	call exp__H1Zd_RCt7complex1ZX01_t7complex1ZX01
 	addl $4,%esp
 	fldl -16(%ebp)
 	fmul %st(0),%st
 	fldl -8(%ebp)
 	fmul %st(0),%st
 	faddp %st,%st(1)
- -	fstpl -40(%ebp)
- -	fldl -40(%ebp)
+	fstl -40(%ebp)
 	fldl .LC18
 	fcompp
 	fnstsw %ax
 	andb $5,%ah
 	jne .L1091
 	pushl $.LC19
 	pushl $cout
 	call __ls__7ostreamPCc
 	addl $8,%esp
 	pushl %eax
 .LCFI4:
 	call endl__FR7ostream
 	addl $4,%esp
 .L1091:
- -	fldl -40(%ebp)
 	fldl .LC18
- -	fcompp
+	fcompl -40(%ebp)
 	fnstsw %ax
 	andb $69,%ah
 	cmpb $1,%ah
 	jne .L1093
 	pushl $.LC20
 	pushl $cout
 .LCFI5:
=========================================================================

I've appended testfwhm.ii.gz and  testfwhm.s.gz (base64 encoded) below.

Yours,

Jeroen Nijhof

=========================================================================
Content-Type: application/octet-stream; name="testfwhm.ii.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="testfwhm.ii.gz"
Content-MD5: OJaylKW3Wk9PbmxapUZAxw==

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

- -----

Content-Type: application/octet-stream; name="testfwhm.s.gz"
Content-Transfer-Encoding: base64
Content-Disposition: inline; filename="testfwhm.s.gz"
Content-MD5: 2LLOnmnDY0xyeDFaq3xFJg==

H4sICOMIMjcAA3Rlc3Rmd2htLnMArVdbb5tIFH7GvwK5ieRIBjEDGJyntm6SjZTNRl2ttOoL
wjC22Y6Bwjgm++t3bpiLIYV6E8nMnNuc851vjo2ibyKMlClBOdkcd3s9CKYTRX9FWR4lsTI1
gG6A6WQbBNALkn1KjUP9dqJvcbLGqueRXZYcJ3qOAsLs9SwJfeJP9KcVWN7SQDnJonirTPO9
jzHK1CRT0Y+Dj6fMBBp1E+xnW5Sx030cbWPV5VEsZoKTeKsahTE3CssQfy0z+8wMWB1mi/No
XWbOebSgw8xtmZkbJHLTCSrIyRgsSrz2fhRTMXlLkcI384+bQ8yhm7AtBfbp/jOgYdNDvsPq
NVqn7KT7R4bUPnllojydV3Jmmx9o6CvLmjOdEEMq3uAQqxzCyYdPLy9CEEP6LIId/XzDsJh8
eP7DE0o/DNXrnMyMmzl9lC75j4zUjMqQNl2H0WvKPJj5DNzUtIsuLUY+VjWwmLHk6RkoLLiL
PJSug11OP/cH3BPWEamrJ0VOUhrShCLkSQCtUiDOLA3omX5RQVtf01w4bibFLaBMVVGRet5v
4FvofV0RhzEfowJ8+9sAXnM7UShwDH6Bvsj2VKaop46rNHD79TReCwBRlmWcfHiI1p4TkqFI
k2N5xDnJj+o1q9KPw7V6Zc+vfdr3f2JEbYGxBGX5V/y2nnZBciASBc/Duec5Cb2iyN+/rIKy
WldWW8OS42ed8ItD7Hn3X0vfFkwigdtfLWWxFLUE+5TuQKsws14YNJqF8TTt218tcNFboDia
qoskEx6Sb/LartMyZJLKm61kiCV0fwfYxd8gwMdh9G85HLhM40OjmrDb+KDjKP6exAHSie55
4Stn6uaMqedknU/9Yjr/mGbJdh2RvD6hFP2I/O/KqHCnUTYuiWrmjfITwxF2DEenZzi6pdxt
DB0uAs2hQHmXq7Vby7YzproRs0wOHXlFG1OIarNctU7W7RHFA4XFaWeVW5lyOIwo9O5wrkDB
FVhxZRz63Fkb1+efs+98Tl7EviHhztk3KIkO9g3xE+wzO9i37PtqNkbRDzfph8fQTxzRTT/c
oJ+wvIB+pqCf2UG/QfBzZ21co39Ov+z/pd+QcOf0G5REB/2G+An6WR30A6CPf3AU/0iTf+Qd
/nFjWNdXP1igJBpp0E7aX8A7S/DO6uDdINy5szauwzXioZ23yfw9oiQ61knEfgJ8+v3O+3z3
8PjseSw7a/1GkKI/Pa0e7yh3n/5kz0pBXxXoWi5BteyWOkG1dqtlTWp1Ll23GU5QnUF5V6aT
I1JmOZdiTWZbr+L+i6iCPevlcYHWqr+mp+8x9R0PLmS1bEs1e8Np61Fn5a5drWFvMHYYi1kZ
hNXS7nUzhVstCdidRcvPEn5mt5/V62cLP2vseQvhZ/efV+t32TjZb7adS7Em29jqtyn7bbb7
bb7bb9joN9RKWXcNTlt/Sb9dAYjT2+8mHmYTD1PiYUo8zBYetsTDbuNhv4uH2cDD1EpZdwnL
tv4i/hsCkOVAQOwmILYExJaA2C1AHAmI0wbEeRcQqwGIpZWynhpA2+AiRKC822AgJE4TEkdC
4khIGNWiEMVEmT6sVrfq7OH5rxsVbYNcg/oS6AtD/YLWkR+rUAfqjCuATv/VDGHk5+hmOvkP
KcpZWn0TAAA=

- -----



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