[PATCH 01/10] Use rtx_jump_table_data in jump.c:delete_related_insns

David Malcolm dmalcolm@redhat.com
Fri Sep 5 01:47:00 GMT 2014


gcc/
	* jump.c (delete_related_insns): Introduce a new local "table" by
	replacing JUMP_TABLE_DATA_P with a dyn_cast, then use the
	get_labels method of "table" to simplify access to the labels in
	the jump table.
---
 gcc/jump.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gcc/jump.c b/gcc/jump.c
index 12edd92..84040da 100644
--- a/gcc/jump.c
+++ b/gcc/jump.c
@@ -1314,15 +1314,15 @@ delete_related_insns (rtx uncast_insn)
 
   /* Likewise if we're deleting a dispatch table.  */
 
-  if (JUMP_TABLE_DATA_P (insn))
+  if (rtx_jump_table_data *table = dyn_cast <rtx_jump_table_data *> (insn))
     {
-      rtx pat = PATTERN (insn);
-      int i, diff_vec_p = GET_CODE (pat) == ADDR_DIFF_VEC;
-      int len = XVECLEN (pat, diff_vec_p);
+      rtvec labels = table->get_labels ();
+      int i;
+      int len = GET_NUM_ELEM (labels);
 
       for (i = 0; i < len; i++)
-	if (LABEL_NUSES (XEXP (XVECEXP (pat, diff_vec_p, i), 0)) == 0)
-	  delete_related_insns (XEXP (XVECEXP (pat, diff_vec_p, i), 0));
+	if (LABEL_NUSES (XEXP (RTVEC_ELT (labels, i), 0)) == 0)
+	  delete_related_insns (XEXP (RTVEC_ELT (labels, i), 0));
       while (next && INSN_DELETED_P (next))
 	next = NEXT_INSN (next);
       return next;
-- 
1.8.5.3



More information about the Gcc-patches mailing list