]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/63620 (RELOAD lost SET_GOT dependency on Darwin)
authorVladimir Makarov <vmakarov@redhat.com>
Mon, 10 Nov 2014 21:33:06 +0000 (21:33 +0000)
committerVladimir Makarov <vmakarov@gcc.gnu.org>
Mon, 10 Nov 2014 21:33:06 +0000 (21:33 +0000)
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

gcc/ChangeLog
gcc/lra-lives.c

index 8a329222dc5decc18858ea5a850abca033f5a25a..63d43b682396c18d1e57be6e86eb752dc8b2c3f2 100644 (file)
@@ -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
index 0e97cd814299df160ad7d1ba31ffd6b2e5440cce..03def823a101ab0fe28ca97836b230f63be5456f 100644 (file)
@@ -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)
            {