aboutsummaryrefslogtreecommitdiff
path: root/gcc/ira.h
diff options
context:
space:
mode:
authorPeter Bergner <bergner@linux.ibm.com>2018-10-06 02:12:30 +0000
committerPeter Bergner <bergner@gcc.gnu.org>2018-10-05 21:12:30 -0500
commita141f2d86293dc202e35bd4d7f832756e1792cdf (patch)
tree5c5f68081db774a0b61e0904e11d151bb12eab8c /gcc/ira.h
parentfb6f9bbc754df7f410d0ae00e0cd8dc839203dc4 (diff)
downloadgcc-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.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/ira.h b/gcc/ira.h
index 9df983c..8a8e460 100644
--- a/gcc/ira.h
+++ b/gcc/ira.h
@@ -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