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