public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: David Malcolm <dmalcolm@redhat.com>
To: gcc-patches@gcc.gnu.org
Cc: David Malcolm <dmalcolm@redhat.com>
Subject: [PATCH 04/10] Eliminate the checked cast from get_call_reg_set_usage
Date: Fri, 05 Sep 2014 01:47:00 -0000	[thread overview]
Message-ID: <1409881927-61672-5-git-send-email-dmalcolm@redhat.com> (raw)
In-Reply-To: <1409881927-61672-1-git-send-email-dmalcolm@redhat.com>

gcc/
	* caller-save.c (setup_save_areas): Strengthen local "insn" from
	rtx to rtx_insn *.
	* final.c (get_call_reg_set_usage): Likewise for first param,
	eliminating a checked cast.
	* regs.h (get_call_reg_set_usage): Likewise for first param.
	* resource.c (mark_set_resources): Introduce local rtx_call_insn *
	"call_insn" for the case of a MARK_SRC_DEST_CALL via a checked
	cast, replacing references to "x" with "call_insn" where
	appropriate.
	(mark_target_live_regs): Strengthen local "real_insn" from rtx to
	rtx_insn *, adding a checked cast.
---
 gcc/caller-save.c |  2 +-
 gcc/final.c       |  3 +--
 gcc/regs.h        |  2 +-
 gcc/resource.c    | 11 ++++++-----
 4 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/gcc/caller-save.c b/gcc/caller-save.c
index d94343e..a0c402e 100644
--- a/gcc/caller-save.c
+++ b/gcc/caller-save.c
@@ -418,7 +418,7 @@ setup_save_areas (void)
   int i, j, k, freq;
   HARD_REG_SET hard_regs_used;
   struct saved_hard_reg *saved_reg;
-  rtx insn;
+  rtx_insn *insn;
   struct insn_chain *chain, *next;
   unsigned int regno;
   HARD_REG_SET hard_regs_to_save, used_regs, this_insn_sets;
diff --git a/gcc/final.c b/gcc/final.c
index 81c750d..d9a887f 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -4879,10 +4879,9 @@ get_call_cgraph_rtl_info (rtx_insn *insn)
    in REG_SET.  Return DEFAULT_SET in REG_SET if not found.  */
 
 bool
-get_call_reg_set_usage (rtx uncast_insn, HARD_REG_SET *reg_set,
+get_call_reg_set_usage (rtx_insn *insn, HARD_REG_SET *reg_set,
 			HARD_REG_SET default_set)
 {
-  rtx_insn *insn = safe_as_a <rtx_insn *> (uncast_insn);
   if (flag_use_caller_save)
     {
       struct cgraph_rtl_info *node = get_call_cgraph_rtl_info (insn);
diff --git a/gcc/regs.h b/gcc/regs.h
index 36e803d..17a7e58 100644
--- a/gcc/regs.h
+++ b/gcc/regs.h
@@ -412,7 +412,7 @@ range_in_hard_reg_set_p (const HARD_REG_SET set, unsigned regno, int nregs)
 }
 
 /* Get registers used by given function call instruction.  */
-extern bool get_call_reg_set_usage (rtx insn, HARD_REG_SET *reg_set,
+extern bool get_call_reg_set_usage (rtx_insn *insn, HARD_REG_SET *reg_set,
 				    HARD_REG_SET default_set);
 
 #endif /* GCC_REGS_H */
diff --git a/gcc/resource.c b/gcc/resource.c
index 5528831..ff9b878 100644
--- a/gcc/resource.c
+++ b/gcc/resource.c
@@ -659,15 +659,16 @@ mark_set_resources (rtx x, struct resources *res, int in_dest,
 
       if (mark_type == MARK_SRC_DEST_CALL)
 	{
+	  rtx_call_insn *call_insn = as_a <rtx_call_insn *> (x);
 	  rtx link;
 	  HARD_REG_SET regs;
 
 	  res->cc = res->memory = 1;
 
-	  get_call_reg_set_usage (x, &regs, regs_invalidated_by_call);
+	  get_call_reg_set_usage (call_insn, &regs, regs_invalidated_by_call);
 	  IOR_HARD_REG_SET (res->regs, regs);
 
-	  for (link = CALL_INSN_FUNCTION_USAGE (x);
+	  for (link = CALL_INSN_FUNCTION_USAGE (call_insn);
 	       link; link = XEXP (link, 1))
 	    if (GET_CODE (XEXP (link, 0)) == CLOBBER)
 	      mark_set_resources (SET_DEST (XEXP (link, 0)), res, 1,
@@ -675,7 +676,7 @@ mark_set_resources (rtx x, struct resources *res, int in_dest,
 
 	  /* Check for a REG_SETJMP.  If it exists, then we must
 	     assume that this call can clobber any register.  */
-	  if (find_reg_note (x, REG_SETJMP, NULL))
+	  if (find_reg_note (call_insn, REG_SETJMP, NULL))
 	    SET_HARD_REG_SET (res->regs);
 	}
 
@@ -995,7 +996,7 @@ mark_target_live_regs (rtx_insn *insns, rtx target_maybe_return, struct resource
 	   insn = next_insn_no_annul (insn))
 	{
 	  rtx link;
-	  rtx real_insn = insn;
+	  rtx_insn *real_insn = insn;
 	  enum rtx_code code = GET_CODE (insn);
 
 	  if (DEBUG_INSN_P (insn))
@@ -1013,7 +1014,7 @@ mark_target_live_regs (rtx_insn *insns, rtx target_maybe_return, struct resource
 	  if (code == INSN
 	      && GET_CODE (PATTERN (insn)) == USE
 	      && INSN_P (XEXP (PATTERN (insn), 0)))
-	    real_insn = XEXP (PATTERN (insn), 0);
+	    real_insn = as_a <rtx_insn *> (XEXP (PATTERN (insn), 0));
 
 	  if (CALL_P (real_insn))
 	    {
-- 
1.8.5.3

  reply	other threads:[~2014-09-05  1:47 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-05  1:47 [PATCH 00/10] More use of rtx subclasses David Malcolm
2014-09-05  1:47 ` David Malcolm [this message]
2014-09-05  2:28   ` [PATCH 04/10] Eliminate the checked cast from get_call_reg_set_usage Jeff Law
2014-09-05  1:47 ` [PATCH 02/10] Drop uncast_insn from param 1 of final_scan_insn David Malcolm
2014-09-05  2:25   ` Jeff Law
2014-09-05  1:47 ` [PATCH 08/10] Use rtx_insn_list within haifa-sched.c David Malcolm
2014-09-05  2:31   ` Jeff Law
2014-09-05  1:47 ` [PATCH 01/10] Use rtx_jump_table_data in jump.c:delete_related_insns David Malcolm
2014-09-05  2:23   ` Jeff Law
2014-09-05  1:47 ` [PATCH 05/10] Convert set_block_for_insn from a macro to an inline function David Malcolm
2014-09-05  2:29   ` Jeff Law
2014-09-05  1:47 ` [PATCH 06/10] Use rtx_insn more within peep2 David Malcolm
2014-09-05  2:29   ` Jeff Law
2014-09-05  1:47 ` [PATCH 09/10] Simplification within reorg.c David Malcolm
2014-09-05  2:32   ` Jeff Law
2014-09-05  1:47 ` [PATCH 10/10] Use rtx_insn for various jump-handling functions and predicates David Malcolm
2014-09-05  2:34   ` Jeff Law
2014-09-05 13:03   ` Richard Sandiford
2014-09-05 15:16     ` David Malcolm
2014-09-05  1:47 ` [PATCH 07/10] Use rtx_insn for more scheduler things, plus CONST_CAST_RTX_INSN David Malcolm
2014-09-05  2:31   ` Jeff Law
2014-09-05  1:47 ` [PATCH 03/10] for_each_eh_label callbacks take an rtx_code_label David Malcolm
2014-09-05  2:27   ` Jeff Law

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1409881927-61672-5-git-send-email-dmalcolm@redhat.com \
    --to=dmalcolm@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).