This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH 5/7] ira.c use DF luid rather than tracking insn ordering


df_analyze set up luids are more-or-less still valid.  The only
insn changes at this point are due to combine_and_move_insns.

	* ira.c (add_store_equivs): Use DF_INSN_LUID rather than
	bitmap seen_insns.

diff --git a/gcc/ira.c b/gcc/ira.c
index cfd448c..1cace25 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -3567,17 +3567,12 @@ update_equiv_regs (void)
 static void
 add_store_equivs (void)
 {
-  bitmap_head seen_insns;
-
-  bitmap_initialize (&seen_insns, NULL);
   for (rtx_insn *insn = get_insns (); insn; insn = NEXT_INSN (insn))
     {
       rtx set, src, dest;
       unsigned regno;
       rtx_insn *init_insn;
 
-      bitmap_set_bit (&seen_insns, INSN_UID (insn));
-
       if (! INSN_P (insn))
 	continue;
 
@@ -3597,7 +3592,11 @@ add_store_equivs (void)
 	  && ! reg_equiv[regno].pdx_subregs
 	  && reg_equiv[regno].init_insns != NULL
 	  && (init_insn = reg_equiv[regno].init_insns->insn ()) != 0
-	  && bitmap_bit_p (&seen_insns, INSN_UID (init_insn))
+	  /* combine_and_move_insns may have created a new insn for
+	     init_insn.  If we hit one of those its luid will be zero,
+	     but that's OK as we know it is immediately before insn.
+	     For all other cases the luids should be valid.  */
+	  && DF_INSN_LUID (init_insn) < DF_INSN_LUID (insn)
 	  && ! find_reg_note (init_insn, REG_EQUIV, NULL_RTX)
 	  && validate_equiv_mem (init_insn, src, dest)
 	  && ! memref_used_between_p (dest, init_insn, insn)
@@ -3617,7 +3616,6 @@ add_store_equivs (void)
 		     INSN_UID (insn));
 	}
     }
-  bitmap_clear (&seen_insns);
 }
 
 /* Scan all regs killed in an insn to see if any of them are registers

-- 
Alan Modra
Australia Development Lab, IBM


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]