middle-end/9998: Lost update on bitfield manipulation via pointer
bangerth@dealii.org
bangerth@dealii.org
Mon Mar 10 15:37:00 GMT 2003
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
More information about the Gcc-bugs
mailing list