Gentoo Archives: gentoo-amd64

From: Nikos Chantziaras <realnc@×××××.de>
To: gentoo-amd64@l.g.o
Subject: [gentoo-amd64] Re: GCC-4.5.2 Has Serious Problems
Date: Thu, 30 Jun 2011 23:37:25
Message-Id: iuj17v$o6s$
In Reply to: [gentoo-amd64] GCC-4.5.2 Has Serious Problems by Frank Peters
On 07/01/2011 12:45 AM, Frank Peters wrote:
> Hello, > > After banging my head for a while over some strange results, I began > to suspect GCC-4.5.2, the latest version in portage, was creating > faulty code. > > It seems to a correct suspicion. >[...] > int n; > double x; > unsigned long int arg; > unsigned long int *px = (unsigned long int*)&x;
Your code is buggy, because you're breaking C's aliasing rules. You are not allowed to use a different pointer type to dereference a variable of a different type. Doing so results in undefined behavior. Short answer, GCC is correct, you are wrong :-) To compile code that breaks aliasing rules, always use the "-fno-strict-aliasing" option. In this case: gcc -O2 -fno-strict-aliasing


Subject Author
[gentoo-amd64] Re: GCC-4.5.2 Has Serious Problems Nikos Chantziaras <realnc@×××××.de>