------- 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

Reply via email to