OSDN Git Service

PR c++/43790
[pf3gnuchains/gcc-fork.git] / gcc / store-motion.c
index 4878729..8f8617c 100644 (file)
@@ -1,6 +1,6 @@
 /* Store motion via Lazy Code Motion on the reverse CFG.
    Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
-   2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+   2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -30,7 +30,6 @@ along with GCC; see the file COPYING3.  If not see
 #include "regs.h"
 #include "hard-reg-set.h"
 #include "flags.h"
-#include "real.h"
 #include "insn-config.h"
 #include "recog.h"
 #include "basic-block.h"
@@ -398,7 +397,7 @@ store_killed_in_insn (const_rtx x, const_rtx x_regs, const_rtx insn, int after)
 {
   const_rtx reg, base, note, pat;
 
-  if (!INSN_P (insn))
+  if (! NONDEBUG_INSN_P (insn))
     return false;
 
   if (CALL_P (insn))
@@ -667,7 +666,7 @@ compute_store_table (void)
       FOR_BB_INSNS (bb, insn)
        {
 
-         if (! INSN_P (insn))
+         if (! NONDEBUG_INSN_P (insn))
            continue;
 
          for (def_rec = DF_INSN_DEFS (insn); *def_rec; def_rec++)
@@ -678,7 +677,7 @@ compute_store_table (void)
       memset (already_set, 0, sizeof (int) * max_gcse_regno);
       FOR_BB_INSNS (bb, insn)
        {
-         if (! INSN_P (insn))
+         if (! NONDEBUG_INSN_P (insn))
            continue;
 
          for (def_rec = DF_INSN_DEFS (insn); *def_rec; def_rec++)
@@ -897,7 +896,7 @@ remove_reachable_equiv_notes (basic_block bb, struct st_expr *smexpr)
        last = NEXT_INSN (BB_END (bb));
 
       for (insn = BB_HEAD (bb); insn != last; insn = NEXT_INSN (insn))
-       if (INSN_P (insn))
+       if (NONDEBUG_INSN_P (insn))
          {
            note = find_reg_equal_equiv_note (insn);
            if (!note || !exp_equiv_p (XEXP (note, 0), mem, 0, true))
@@ -963,7 +962,7 @@ replace_store_insn (rtx reg, rtx del, basic_block bb, struct st_expr *smexpr)
      they are no longer accurate provided that they are reached by this
      definition, so drop them.  */
   for (; insn != NEXT_INSN (BB_END (bb)); insn = NEXT_INSN (insn))
-    if (INSN_P (insn))
+    if (NONDEBUG_INSN_P (insn))
       {
        set = single_set (insn);
        if (!set)
@@ -1067,8 +1066,10 @@ build_store_vectors (void)
 
   FOR_EACH_BB (bb)
     {
+      memset (regs_set_in_block, 0, sizeof (int) * max_gcse_regno);
+
       FOR_BB_INSNS (bb, insn)
-       if (INSN_P (insn))
+       if (NONDEBUG_INSN_P (insn))
          {
            df_ref *def_rec;
            for (def_rec = DF_INSN_DEFS (insn); *def_rec; def_rec++)
@@ -1235,7 +1236,6 @@ static unsigned int
 execute_rtl_store_motion (void)
 {
   delete_unreachable_blocks ();
-  df_note_add_problem ();
   df_analyze ();
   flag_rerun_cse_after_global_opts |= one_store_motion_pass ();
   return 0;