This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: middle-end/9998: Lost update on bitfield manipulation via pointer
- From: bangerth at dealii dot org
- To: eriksoe at daimi dot au dot dk, gcc-bugs at gcc dot gnu dot org, gcc-prs at gcc dot gnu dot org, nobody at gcc dot gnu dot org
- Date: 10 Mar 2003 15:31:35 -0000
- Subject: Re: middle-end/9998: Lost update on bitfield manipulation via pointer
- Reply-to: bangerth at dealii dot org, eriksoe at daimi dot au dot dk, gcc-bugs at gcc dot gnu dot org, gcc-prs at gcc dot gnu dot org, nobody at gcc dot gnu dot org, gcc-gnats at gcc dot gnu dot org
Synopsis: Lost update on bitfield manipulation via pointer
State-Changed-From-To: open->closed
State-Changed-By: bangerth
State-Changed-When: Mon Mar 10 15:31:35 2003
State-Changed-Why:
This was fixed between 3.2 and 3.2.2:
g/x> /home/bangerth/bin/gcc-3.2/bin/gcc -ggdb bug1.i -O2
g/x> ./a.out
0
g/x> /home/bangerth/bin/gcc-3.2.2-pre/bin/gcc -ggdb bug1.i -O2
g/x> ./a.out
1
However, you may be violating aliasing rules in your code,
by accessing an object of type M as an object of type N.
In fact, with gcc3.0.4, the code works as expected by
using -fno-strict-aliasing:
g/x> /home/bangerth/bin/gcc-3.0.4/bin/gcc -ggdb bug1.i -O0 && ./a.out
1
g/x> /home/bangerth/bin/gcc-3.0.4/bin/gcc -ggdb bug1.i -O2 && ./a.out
0
g/x> /home/bangerth/bin/gcc-3.0.4/bin/gcc -ggdb bug1.i -O2 -fno-strict-aliasing && ./a.out
1
It might therefore well be that the "fix" between 3.2 and
3.2.2 just doesn't exercise rights to optimize, with your
code still being faulty.
3.3 and mainline work, by the way.
W.
http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=9998