------- Comment #2 from rearnsha at gcc dot gnu dot org  2005-10-18 16:13 
-------
Confirmed still fails on the 3.4 branch (arm-elf cross).  The failure mode is
that we have

  virtual_frame_pointer <= hard_frame_pointer

  ...
  cond_jump somewhere

  var <= virtual_frame_pointer

The initial assignment is special since the assignment will be adjusted once
the offset between the virtal and hard frame pointers is known.  However, when
cse-follow-jumps is enabled the second assignment is replaced with

  var <= hard_frame_pointer

This second assignment is not special so it remains this way after the
virtual->hard addressing is crystalized.  This means that we have the wrong
value in var at this point.

Note that it's not surprising that you can't reproduce this with a series of -f
options, since -O is needed to turn on GCC's optimization framework: without it
cse isn't run at all!

IMO we probably shouldn't be recording a cse for a set of the virtual frame
pointer.


-- 

rearnsha at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rearnsha at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
      Known to fail|                            |3.4.5
   Last reconfirmed|0000-00-00 00:00:00         |2005-10-18 16:13:47
               date|                            |


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

Reply via email to