OSDN Git Service

* df.h (struct df_ref): Replace 'insn' field with 'insn_info' field.
[pf3gnuchains/gcc-fork.git] / gcc / fwprop.c
index 35bc230..6456b0e 100644 (file)
@@ -546,13 +546,13 @@ use_killed_between (struct df_ref *use, rtx def_insn, rtx target_insn)
       /* See if USE is killed between DEF_INSN and the last insn in the
         basic block containing DEF_INSN.  */
       x = df_bb_regno_last_def_find (def_bb, regno);
-      if (x && DF_INSN_LUID (x->insn) >= DF_INSN_LUID (def_insn))
+      if (x && DF_INSN_LUID (DF_REF_INSN (x)) >= DF_INSN_LUID (def_insn))
        return true;
 
       /* See if USE is killed between TARGET_INSN and the first insn in the
         basic block containing TARGET_INSN.  */
       x = df_bb_regno_first_def_find (target_bb, regno);
-      if (x && DF_INSN_LUID (x->insn) < DF_INSN_LUID (target_insn))
+      if (x && DF_INSN_LUID (DF_REF_INSN (x)) < DF_INSN_LUID (target_insn))
        return true;
 
       return false;
@@ -570,6 +570,7 @@ static bool
 all_uses_available_at (rtx def_insn, rtx target_insn)
 {
   struct df_ref **use_rec;
+  struct df_insn_info *insn_info = DF_INSN_INFO_GET (def_insn);
   rtx def_set = single_set (def_insn);
 
   gcc_assert (def_set);
@@ -583,13 +584,13 @@ all_uses_available_at (rtx def_insn, rtx target_insn)
 
       /* If the insn uses the reg that it defines, the substitution is
          invalid.  */
-      for (use_rec = DF_INSN_USES (def_insn); *use_rec; use_rec++)
+      for (use_rec = DF_INSN_INFO_USES (insn_info); *use_rec; use_rec++)
        {
          struct df_ref *use = *use_rec;
          if (rtx_equal_p (DF_REF_REG (use), def_reg))
            return false;
        }
-      for (use_rec = DF_INSN_EQ_USES (def_insn); *use_rec; use_rec++)
+      for (use_rec = DF_INSN_INFO_EQ_USES (insn_info); *use_rec; use_rec++)
        {
          struct df_ref *use = *use_rec;
          if (rtx_equal_p (use->reg, def_reg))
@@ -600,13 +601,13 @@ all_uses_available_at (rtx def_insn, rtx target_insn)
     {
       /* Look at all the uses of DEF_INSN, and see if they are not
         killed between DEF_INSN and TARGET_INSN.  */
-      for (use_rec = DF_INSN_USES (def_insn); *use_rec; use_rec++)
+      for (use_rec = DF_INSN_INFO_USES (insn_info); *use_rec; use_rec++)
        {
          struct df_ref *use = *use_rec;
          if (use_killed_between (use, def_insn, target_insn))
            return false;
        }
-      for (use_rec = DF_INSN_EQ_USES (def_insn); *use_rec; use_rec++)
+      for (use_rec = DF_INSN_INFO_EQ_USES (insn_info); *use_rec; use_rec++)
        {
          struct df_ref *use = *use_rec;
          if (use_killed_between (use, def_insn, target_insn))
@@ -767,8 +768,9 @@ try_fwprop_subst (struct df_ref *use, rtx *loc, rtx new, rtx def_insn, bool set_
       df_ref_remove (use);
       if (!CONSTANT_P (new))
        {
-         update_df (insn, loc, DF_INSN_USES (def_insn), type, flags);
-         update_df (insn, loc, DF_INSN_EQ_USES (def_insn), type, flags);
+         struct df_insn_info *insn_info = DF_INSN_INFO_GET (def_insn);
+         update_df (insn, loc, DF_INSN_INFO_USES (insn_info), type, flags);
+         update_df (insn, loc, DF_INSN_INFO_EQ_USES (insn_info), type, flags);
        }
     }
   else
@@ -788,9 +790,10 @@ try_fwprop_subst (struct df_ref *use, rtx *loc, rtx new, rtx def_insn, bool set_
             set_unique_reg_note?  */
           if (!CONSTANT_P (new))
            {
-             update_df (insn, loc, DF_INSN_USES (def_insn),
+             struct df_insn_info *insn_info = DF_INSN_INFO_GET (def_insn);
+             update_df (insn, loc, DF_INSN_INFO_USES (insn_info),
                         type, DF_REF_IN_NOTE);
-             update_df (insn, loc, DF_INSN_EQ_USES (def_insn),
+             update_df (insn, loc, DF_INSN_INFO_EQ_USES (insn_info),
                         type, DF_REF_IN_NOTE);
            }
        }