[Bug target/55108] bad compile-time evaluation of members of initialized union

rearnsha at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Oct 30 14:13:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55108

Richard Earnshaw <rearnsha at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-10-30
     Ever Confirmed|0                           |1
      Known to fail|                            |4.6.3, 4.7.0

--- Comment #2 from Richard Earnshaw <rearnsha at gcc dot gnu.org> 2012-10-30 14:13:15 UTC ---
Confirmed.  It seems the compiler is incorrectly eliminating some zero-extend
operations.  We have

Ra:SI = Rx:SI >> 8
Rb:QI = subreg:QI (Ra:SI 0)
Rc:SI = subreg:SI (Rb:QI 0)
Rd:SI = Rc:SI & 255

cse1 pass then decides incorrectly (and presumably because of the paradoxical
subreg) that Rd == Rc and discards the mask operation.

Also seen in 4.7, haven't been able to test trunk.



More information about the Gcc-bugs mailing list