re PR rtl-optimization/86939 (IRA incorrectly creates an interference between a pseud...
authorPeter Bergner <bergner@linux.ibm.com>
Sat, 6 Oct 2018 02:12:30 +0000 (02:12 +0000)
committerPeter Bergner <bergner@gcc.gnu.org>
Sat, 6 Oct 2018 02:12:30 +0000 (21:12 -0500)
commita141f2d86293dc202e35bd4d7f832756e1792cdf
tree5c5f68081db774a0b61e0904e11d151bb12eab8c
parentfb6f9bbc754df7f410d0ae00e0cd8dc839203dc4
re PR rtl-optimization/86939 (IRA incorrectly creates an interference between a pseudo register and a hard register)

gcc/
PR rtl-optimization/86939
PR rtl-optimization/87479
* ira.h (non_conflicting_reg_copy_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.
(non_conflicting_reg_copy_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.

gcc/testsuite/
PR rtl-optimization/86939
PR rtl-optimization/87479
* gcc.target/powerpc/pr86939.c: New test.
* gcc/testsuite/gcc.target/i386/pr49095.c: Fix expected results.

From-SVN: r264897
gcc/ChangeLog
gcc/ira-lives.c
gcc/ira.h
gcc/lra-lives.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr49095.c
gcc/testsuite/gcc.target/powerpc/pr86939.c [new file with mode: 0644]