[Bug tree-optimization/55559] Marshalling double through union with inlines, incorrect behavior with -O2

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Dec 2 00:10:00 GMT 2012


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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2012-12-02
          Component|c++                         |tree-optimization
     Ever Confirmed|0                           |1
      Known to fail|                            |4.7.0, 4.8.0

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> 2012-12-02 00:09:30 UTC ---
CCP is broken:
Visiting statement:
D.1625_1 = D.1625_8;
Lattice value changed to CONSTANT -4616189618054758400.  Adding SSA edges to
worklist.

Visiting statement:
D.1631_7 = VIEW_CONVERT_EXPR<double>(D.1625_1);
which is likely CONSTANT
Lattice value changed to CONSTANT -1.0e+0.  Adding SSA edges to worklist.

Visiting statement:
D.1631_9 = D.1631_7;
Lattice value changed to CONSTANT -1.0e+0.  Adding SSA edges to worklist.

Visiting statement:
D.1631_2 = D.1631_9;
Lattice value changed to CONSTANT -1.0e+0.  Adding SSA edges to worklist.

Visiting statement:
D.1610_3 = (unsigned int) D.1631_2;
which is likely CONSTANT
Lattice value changed to CONSTANT 0.  Adding SSA edges to worklist.


I think this is a regression if the code does not use extended  initializer
lists but I have not tested it though.



More information about the Gcc-bugs mailing list