]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR rtl-optimization/40710 (Linux kernel miscompiled for sh4-linux)
authorEric Botcazou <ebotcazou@adacore.com>
Sat, 18 Jul 2009 06:47:22 +0000 (06:47 +0000)
committerKaz Kojima <kkojima@gcc.gnu.org>
Sat, 18 Jul 2009 06:47:22 +0000 (06:47 +0000)
PR rtl-optimization/40710
* resource.c (mark_target_live_regs): Reset DF problem to LR.

From-SVN: r149764

gcc/ChangeLog
gcc/resource.c

index 5b3f6e58a091f79c95a9cde9af1eb818fbe77afc..a221fa9c448793110bd42b8500a43553183a8918 100644 (file)
@@ -1,3 +1,8 @@
+2009-07-18  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR rtl-optimization/40710
+       * resource.c (mark_target_live_regs): Reset DF problem to LR.
+
 2009-07-14  Richard Guenther  <rguenther@suse.de>
 
        Backport from mainline
index 8b1aaa9909c83a0602a6849760076b0a1663df1a..127d0fbbeb471900959d56c2d089d06871bc68f4 100644 (file)
@@ -948,10 +948,11 @@ mark_target_live_regs (rtx insns, rtx target, struct resources *res)
 
   /* If we found a basic block, get the live registers from it and update
      them with anything set or killed between its start and the insn before
-     TARGET.  Otherwise, we must assume everything is live.  */
+     TARGET; this custom life analysis is really about registers so we need
+     to use the LR problem.  Otherwise, we must assume everything is live.  */
   if (b != -1)
     {
-      regset regs_live = df_get_live_in (BASIC_BLOCK (b));
+      regset regs_live = DF_LR_IN (BASIC_BLOCK (b));
       rtx start_insn, stop_insn;
 
       /* Compute hard regs live at start of block.  */
@@ -1055,7 +1056,7 @@ mark_target_live_regs (rtx insns, rtx target, struct resources *res)
                {
                  HARD_REG_SET extra_live;
 
-                 REG_SET_TO_HARD_REG_SET (extra_live, df_get_live_in (bb));
+                 REG_SET_TO_HARD_REG_SET (extra_live, DF_LR_IN (bb));
                  IOR_HARD_REG_SET (current_live_regs, extra_live);
                }
            }