This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: middle-end/9998: Lost update on bitfield manipulation via pointer


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]