On Tue, Oct 2, 2018 at 7:59 AM Peter Bergner <berg...@linux.ibm.com> wrote:
>
> On 10/1/18 10:52 PM, Peter Bergner wrote:
> > Now that we handle conflicts at definitions and the pic hard reg
> > is set via a copy from the pic pseudo, my PATCH 2 is setup to
> > handle exactly this scenario (ie, a copy between a pseudo and
> > a hard reg).  I looked at the asm output from a build with both
> > PATCH 1 and PATCH 2, and yes, it also does not add the conflict
> > between the pic pseudo and pic hard reg, so our other option to
> > fix PR87479 is to apply PATCH 2.  However, since PATCH 2 handles
> > the pic pseudo and pic hard reg conflict itself, that means we
> > don't need the special pic conflict code and it can be removed!
> > I'm going to update PATCH 2 to remove that pic handling code
> > and send it through bootstrap and regtesting.
>
> Here is an updated PATCH 2 that adds the generic handling of copies between
> pseudos and hard regs which obsoletes the special conflict handling of the
> REAL_PIC_OFFSET_TABLE_REGNUM with the pic pseudo.  I have confirmed the
> assembler generated by this patch for test case pr63534.c matches the code
> generated before PATCH 1 was committed, so we are successfully removing the
> copy of the pic pseudo into the pic hard reg with this patch.
>
> I'm currently performing bootstrap and regtesting on powerpc64le-linux and
> x86_64-linux.  H.J., could you please test this patch on i686 to verify it
> doesn't expose any other problems there?  Otherwise, I'll take Jeff's

I am waiting for the result of your previous patch.  I will test this one after
that.

> suggestion and attempt a build on gcc45, but it sounds like the results
> will take a while.
>
> Is this patch version ok for trunk assuming no regressions are found in
> the testing mentioned above?
>
> Peter
>
>
> gcc/
>         PR rtl-optimization/86939
>         PR rtl-optimization/87479
>         * ira.h (copy_insn_p): New prototype.
>         * ira-lives.c (ignore_reg_for_conflicts): New static variable.
>         (make_hard_regno_dead): Don't add conflicts for register
>         ignore_reg_for_conflicts.
>         (make_object_dead): Likewise.
>         (copy_insn_p): New function.
>         (process_bb_node_lives): Set ignore_reg_for_conflicts for copies.
>         Remove special conflict handling of REAL_PIC_OFFSET_TABLE_REGNUM.
>         * lra-lives.c (ignore_reg_for_conflicts): New static variable.
>         (make_hard_regno_dead): Don't add conflicts for register
>         ignore_reg_for_conflicts.  Remove special conflict handling of
>         REAL_PIC_OFFSET_TABLE_REGNUM.  Remove now unused argument
>         check_pic_pseudo_p and update callers.
>         (mark_pseudo_dead): Don't add conflicts for register
>         ignore_reg_for_conflicts.
>         (process_bb_lives): Set ignore_reg_for_conflicts for copies.
>


-- 
H.J.

Reply via email to