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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|REOPENED                    |ASSIGNED
         AssignedTo|unassigned at gcc dot       |jakub at gcc dot gnu.org
                   |gnu.org                     |

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-01-06 
13:00:28 UTC ---
Created attachment 26256
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=26256
gcc47-pr50127.patch

Untested fix.

The problem was that partition_hot_cold_basic_blocks was leaving garbage in
some bb->aux fields, but subsequent optimization passes and/or df_analyze here
assume that each pass cleans that up after itself.  DF was storing age in
bb->aux as ptrdiff_t values, and when some bb->aux contained pointer to another
bb, if it was in the upper half of address space (for 32-bit hosts), it was
treated as negative age, while if in the lower half of AS (for 64-bit hosts),
it was just assumed to be very huge age.

Reply via email to