------- Comment #6 from vmakarov at redhat dot com 2008-09-16 16:47 ------- John, thanks for detail analysis. IRA uses 25 for p171 because there is no recorded conflicts for p171 and hard register 25. The problem was introduced by recent patch
2008-09-04 Richard Sandiford <[EMAIL PROTECTED]> PR middle-end/37243 * ira-build.c (form_loop_tree): Reverse BB walk. (create_bb_allocnos): Likewise. * ira-lives.c (make_regno_born_and_dead, regs_set): Delete. (mark_reg_store): Rename to... (mark_ref_live): ...this and take a df_ref argument instead of note_stores arguments. Assert that we have a register. (mark_reg_clobber): Delete. (def_conflicts_with_inputs_p): New function. (mark_reg_conflicts): Delete. (mark_reg_death): Rename to... (mark_ref_dead): ...this and take a df_ref argument instead of a register. Assert that we have a register. (process_bb_node_lives): Hoist frequency calculation out of instruction walk. Convert from a forwards scan to a backwards scan. Use DF_REF_USES and DF_REF_DEFS instead of register notes and note_stores. Remove EH_RETURN_DATA_REGNO and regs_set handling. (create_allocno_live_ranges): Don't create regs_set. I'll work on a fix. Unfortunately using DF for building conflicts became more complicated that it was before based on REG notes. So it will take some time. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37535