diff options
author | Vladimir Makarov <vmakarov@redhat.com> | 2014-11-10 21:33:06 +0000 |
---|---|---|
committer | Vladimir Makarov <vmakarov@gcc.gnu.org> | 2014-11-10 21:33:06 +0000 |
commit | 6750565c3686d82123ad9e0e2a153cfecdf7a2d9 (patch) | |
tree | 27bcbf2a0bbc63a04eb07c0e34b4a1a2c9316d5e | |
parent | c7488fba456957f70edd5a6bb0464fe336f694c5 (diff) | |
download | gcc-6750565c3686d82123ad9e0e2a153cfecdf7a2d9.zip gcc-6750565c3686d82123ad9e0e2a153cfecdf7a2d9.tar.gz gcc-6750565c3686d82123ad9e0e2a153cfecdf7a2d9.tar.bz2 |
re PR rtl-optimization/63620 (RELOAD lost SET_GOT dependency on Darwin)
2014-11-10 Vladimir Makarov <vmakarov@redhat.com>
PR rtl-optimization/63620
PR rtl-optimization/63799
* lra-lives.c (process_bb_lives): Do not delete EH_REGION, trapped
and setting PIC pseudo insns.
(lra_create_live_ranges): Fix the typo.
From-SVN: r217320
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/lra-lives.c | 11 |
2 files changed, 17 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8a32922..63d43b6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2014-11-10 Vladimir Makarov <vmakarov@redhat.com> + + PR rtl-optimization/63620 + PR rtl-optimization/63799 + * lra-lives.c (process_bb_lives): Do not delete EH_REGION, trapped + and setting PIC pseudo insns. + (lra_create_live_ranges): Fix the typo. + 2014-11-10 Patrick Palka <ppalka@gcc.gnu.org> PR middle-end/63748 diff --git a/gcc/lra-lives.c b/gcc/lra-lives.c index 0e97cd8..03def82 100644 --- a/gcc/lra-lives.c +++ b/gcc/lra-lives.c @@ -704,7 +704,13 @@ process_bb_lives (basic_block bb, int &curr_point) set = single_set (curr_insn); if (set != NULL_RTX - && REG_P (SET_DEST (set)) && REGNO (SET_DEST (set)) >= FIRST_PSEUDO_REGISTER) + && REG_P (SET_DEST (set)) && REGNO (SET_DEST (set)) >= FIRST_PSEUDO_REGISTER + && find_reg_note (curr_insn, REG_EH_REGION, NULL_RTX) == NULL_RTX + && ! may_trap_p (PATTERN (curr_insn)) + /* Don't do premature remove of pic offset pseudo as we can + start to use it after some reload generation. */ + && (pic_offset_table_rtx == NULL_RTX + || pic_offset_table_rtx != SET_DEST (set))) { bool dead_insn_p = true; @@ -1273,7 +1279,8 @@ lra_create_live_ranges (bool all_p) df_get_postorder (DF_BACKWARD), df_get_n_blocks (DF_BACKWARD)); if (lra_dump_file != NULL) { - fprintf (lra_dump_file, "Global pseudo live data have be updated:\n"); + fprintf (lra_dump_file, + "Global pseudo live data have been updated:\n"); basic_block bb; FOR_EACH_BB_FN (bb, cfun) { |