aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Makarov <vmakarov@redhat.com>2014-11-10 21:33:06 +0000
committerVladimir Makarov <vmakarov@gcc.gnu.org>2014-11-10 21:33:06 +0000
commit6750565c3686d82123ad9e0e2a153cfecdf7a2d9 (patch)
tree27bcbf2a0bbc63a04eb07c0e34b4a1a2c9316d5e
parentc7488fba456957f70edd5a6bb0464fe336f694c5 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--gcc/lra-lives.c11
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)
{