------- Comment #3 from vmakarov at redhat dot com 2008-09-06 13:45 ------- Function ira_emit.c::update_costs does not take into account that new allocnos (It is very rare event. New allocnos during code emitting are created only to break a cycle in register shuffling on the region border) got 1 as initial frequency. That was done to prevent division by zero in ira_color.c::update_conflict_hard_reg_costs. As a result we get negative frequency in IR flattening when there is a different allocation of a pseudo on the region border and a new allocno is used to copy pseudo values (outside and inside the border).
The patch solving the problem will be sent soon. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37333