diff options
author | Peter Bergner <bergner@linux.ibm.com> | 2018-10-06 02:12:30 +0000 |
---|---|---|
committer | Peter Bergner <bergner@gcc.gnu.org> | 2018-10-05 21:12:30 -0500 |
commit | a141f2d86293dc202e35bd4d7f832756e1792cdf (patch) | |
tree | 5c5f68081db774a0b61e0904e11d151bb12eab8c /gcc/ira.h | |
parent | fb6f9bbc754df7f410d0ae00e0cd8dc839203dc4 (diff) | |
download | gcc-a141f2d86293dc202e35bd4d7f832756e1792cdf.zip gcc-a141f2d86293dc202e35bd4d7f832756e1792cdf.tar.gz gcc-a141f2d86293dc202e35bd4d7f832756e1792cdf.tar.bz2 |
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
Diffstat (limited to 'gcc/ira.h')
-rw-r--r-- | gcc/ira.h | 3 |
1 files changed, 3 insertions, 0 deletions
@@ -210,6 +210,9 @@ extern void ira_adjust_equiv_reg_cost (unsigned, int); /* ira-costs.c */ extern void ira_costs_c_finalize (void); +/* ira-lives.c */ +extern rtx non_conflicting_reg_copy_p (rtx_insn *); + /* Spilling static chain pseudo may result in generation of wrong non-local goto code using frame-pointer to address saved stack pointer value after restoring old frame pointer value. The |