This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/23913] New: float/int binary conversion -- "-O2 -march=i686"
- From: "larschri at pvv dot ntnu dot no" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Sep 2005 11:09:33 -0000
- Subject: [Bug c/23913] New: float/int binary conversion -- "-O2 -march=i686"
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Full example files are here:
http://www.pvv.ntnu.no/~larschri/cast-bug/
The compiled program fails to do binary conversion between float and int. Both
sizeof(int) and sizeof(float) is 4, so the two floats below should have the same
binary representation after being written/read to/from the integer object.
float f1 = 4.5;
int i = *((int*)&f1);
float f2 = *((float*)&i);
assert(f1 == f2);
$ gcc --version
gcc (GCC) 4.0.1 20050727 (Red Hat 4.0.1-5)
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ gcc -O2 -march=i686 cast-bug.c
$ ./a.out
a.out: cast-bug.c:8: main: Assertion `f1 == f2' failed.
Aborted
--
Summary: float/int binary conversion -- "-O2 -march=i686"
Product: gcc
Version: 4.0.1
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: larschri at pvv dot ntnu dot no
CC: gcc-bugs at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23913