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.