diff mbox

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

Message ID 1409881927-61672-2-git-send-email-dmalcolm@redhat.com
State New
Headers show

Commit Message

David Malcolm Sept. 5, 2014, 1:51 a.m. UTC
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(-)

Comments

Jeff Law Sept. 5, 2014, 2:23 a.m. UTC | #1
On 09/04/14 19:51, David Malcolm wrote:
> 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.
OK.
Jeff
diff mbox

Patch

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;