aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2014-08-19 17:39:08 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2014-08-19 17:39:08 +0000
commiteb51c837dd39c8eea4751234230ab4334db66d49 (patch)
tree334afa48c1700aa96da864f37f94b04143e97375 /gcc
parentad035db84b6136038f9919c72c2bdf140342bf4e (diff)
downloadgcc-eb51c837dd39c8eea4751234230ab4334db66d49.zip
gcc-eb51c837dd39c8eea4751234230ab4334db66d49.tar.gz
gcc-eb51c837dd39c8eea4751234230ab4334db66d49.tar.bz2
Strengthen return types of various {next|prev}_*insn from rtx to rtx_insn *
2014-08-19 David Malcolm <dmalcolm@redhat.com> * rtl.h (previous_insn): Strengthen return type from rtx to rtx_insn *. (next_insn): Likewise. (prev_nonnote_insn): Likewise. (prev_nonnote_insn_bb): Likewise. (next_nonnote_insn): Likewise. (next_nonnote_insn_bb): Likewise. (prev_nondebug_insn): Likewise. (next_nondebug_insn): Likewise. (prev_nonnote_nondebug_insn): Likewise. (next_nonnote_nondebug_insn): Likewise. (prev_real_insn): Likewise. (next_real_insn): Likewise. (prev_active_insn): Likewise. (next_active_insn): Likewise. * emit-rtl.c (next_insn): Strengthen return type from rtx to rtx_insn *, adding a checked cast. (previous_insn): Likewise. (next_nonnote_insn): Likewise. (next_nonnote_insn_bb): Likewise. (prev_nonnote_insn): Likewise. (prev_nonnote_insn_bb): Likewise. (next_nondebug_insn): Likewise. (prev_nondebug_insn): Likewise. (next_nonnote_nondebug_insn): Likewise. (prev_nonnote_nondebug_insn): Likewise. (next_real_insn): Likewise. (prev_real_insn): Likewise. (next_active_insn): Likewise. (prev_active_insn): Likewise. * config/sh/sh-protos.h (sh_find_set_of_reg): Convert function ptr param "stepfunc" so that it returns an rtx_insn * rather than an rtx, to track the change to prev_nonnote_insn_bb, which is the only function this is called with. * config/sh/sh.c (sh_find_set_of_reg): Likewise. From-SVN: r214178
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog40
-rw-r--r--gcc/config/sh/sh-protos.h2
-rw-r--r--gcc/config/sh/sh.c2
-rw-r--r--gcc/emit-rtl.c60
-rw-r--r--gcc/rtl.h28
5 files changed, 86 insertions, 46 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3e10971..2bd3e1a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,43 @@
+2014-08-19 David Malcolm <dmalcolm@redhat.com>
+
+ * rtl.h (previous_insn): Strengthen return type from rtx to
+ rtx_insn *.
+ (next_insn): Likewise.
+ (prev_nonnote_insn): Likewise.
+ (prev_nonnote_insn_bb): Likewise.
+ (next_nonnote_insn): Likewise.
+ (next_nonnote_insn_bb): Likewise.
+ (prev_nondebug_insn): Likewise.
+ (next_nondebug_insn): Likewise.
+ (prev_nonnote_nondebug_insn): Likewise.
+ (next_nonnote_nondebug_insn): Likewise.
+ (prev_real_insn): Likewise.
+ (next_real_insn): Likewise.
+ (prev_active_insn): Likewise.
+ (next_active_insn): Likewise.
+
+ * emit-rtl.c (next_insn): Strengthen return type from rtx to
+ rtx_insn *, adding a checked cast.
+ (previous_insn): Likewise.
+ (next_nonnote_insn): Likewise.
+ (next_nonnote_insn_bb): Likewise.
+ (prev_nonnote_insn): Likewise.
+ (prev_nonnote_insn_bb): Likewise.
+ (next_nondebug_insn): Likewise.
+ (prev_nondebug_insn): Likewise.
+ (next_nonnote_nondebug_insn): Likewise.
+ (prev_nonnote_nondebug_insn): Likewise.
+ (next_real_insn): Likewise.
+ (prev_real_insn): Likewise.
+ (next_active_insn): Likewise.
+ (prev_active_insn): Likewise.
+
+ * config/sh/sh-protos.h (sh_find_set_of_reg): Convert function ptr
+ param "stepfunc" so that it returns an rtx_insn * rather than an
+ rtx, to track the change to prev_nonnote_insn_bb, which is the
+ only function this is called with.
+ * config/sh/sh.c (sh_find_set_of_reg): Likewise.
+
2014-08-19 Jan Hubicka <hubicka@ucw.cz>
* ipa-visibility.c (update_visibility_by_resolution_info): Fix
diff --git a/gcc/config/sh/sh-protos.h b/gcc/config/sh/sh-protos.h
index 685cd23..cec324c 100644
--- a/gcc/config/sh/sh-protos.h
+++ b/gcc/config/sh/sh-protos.h
@@ -181,7 +181,7 @@ struct set_of_reg
rtx set_src;
};
-extern set_of_reg sh_find_set_of_reg (rtx reg, rtx insn, rtx(*stepfunc)(rtx));
+extern set_of_reg sh_find_set_of_reg (rtx reg, rtx insn, rtx_insn *(*stepfunc)(rtx));
extern bool sh_is_logical_t_store_expr (rtx op, rtx insn);
extern rtx sh_try_omit_signzero_extend (rtx extended_op, rtx insn);
#endif /* RTX_CODE */
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index c74200f..673fc7e 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -13505,7 +13505,7 @@ sh_find_equiv_gbr_addr (rtx insn, rtx mem)
'prev_nonnote_insn_bb'. When the insn is found, try to extract the rtx
of the reg set. */
set_of_reg
-sh_find_set_of_reg (rtx reg, rtx insn, rtx(*stepfunc)(rtx))
+sh_find_set_of_reg (rtx reg, rtx insn, rtx_insn *(*stepfunc)(rtx))
{
set_of_reg result;
result.insn = insn;
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 0b537d0..1a31877 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -3179,7 +3179,7 @@ get_max_insn_count (void)
/* Return the next insn. If it is a SEQUENCE, return the first insn
of the sequence. */
-rtx
+rtx_insn *
next_insn (rtx insn)
{
if (insn)
@@ -3190,13 +3190,13 @@ next_insn (rtx insn)
insn = XVECEXP (PATTERN (insn), 0, 0);
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the previous insn. If it is a SEQUENCE, return the last insn
of the sequence. */
-rtx
+rtx_insn *
previous_insn (rtx insn)
{
if (insn)
@@ -3207,13 +3207,13 @@ previous_insn (rtx insn)
insn = XVECEXP (PATTERN (insn), 0, XVECLEN (PATTERN (insn), 0) - 1);
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the next insn after INSN that is not a NOTE. This routine does not
look inside SEQUENCEs. */
-rtx
+rtx_insn *
next_nonnote_insn (rtx insn)
{
while (insn)
@@ -3223,14 +3223,14 @@ next_nonnote_insn (rtx insn)
break;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the next insn after INSN that is not a NOTE, but stop the
search before we enter another basic block. This routine does not
look inside SEQUENCEs. */
-rtx
+rtx_insn *
next_nonnote_insn_bb (rtx insn)
{
while (insn)
@@ -3239,16 +3239,16 @@ next_nonnote_insn_bb (rtx insn)
if (insn == 0 || !NOTE_P (insn))
break;
if (NOTE_INSN_BASIC_BLOCK_P (insn))
- return NULL_RTX;
+ return NULL;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the previous insn before INSN that is not a NOTE. This routine does
not look inside SEQUENCEs. */
-rtx
+rtx_insn *
prev_nonnote_insn (rtx insn)
{
while (insn)
@@ -3258,14 +3258,14 @@ prev_nonnote_insn (rtx insn)
break;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the previous insn before INSN that is not a NOTE, but stop
the search before we enter another basic block. This routine does
not look inside SEQUENCEs. */
-rtx
+rtx_insn *
prev_nonnote_insn_bb (rtx insn)
{
while (insn)
@@ -3274,16 +3274,16 @@ prev_nonnote_insn_bb (rtx insn)
if (insn == 0 || !NOTE_P (insn))
break;
if (NOTE_INSN_BASIC_BLOCK_P (insn))
- return NULL_RTX;
+ return NULL;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the next insn after INSN that is not a DEBUG_INSN. This
routine does not look inside SEQUENCEs. */
-rtx
+rtx_insn *
next_nondebug_insn (rtx insn)
{
while (insn)
@@ -3293,13 +3293,13 @@ next_nondebug_insn (rtx insn)
break;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the previous insn before INSN that is not a DEBUG_INSN.
This routine does not look inside SEQUENCEs. */
-rtx
+rtx_insn *
prev_nondebug_insn (rtx insn)
{
while (insn)
@@ -3309,13 +3309,13 @@ prev_nondebug_insn (rtx insn)
break;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the next insn after INSN that is not a NOTE nor DEBUG_INSN.
This routine does not look inside SEQUENCEs. */
-rtx
+rtx_insn *
next_nonnote_nondebug_insn (rtx insn)
{
while (insn)
@@ -3325,13 +3325,13 @@ next_nonnote_nondebug_insn (rtx insn)
break;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the previous insn before INSN that is not a NOTE nor DEBUG_INSN.
This routine does not look inside SEQUENCEs. */
-rtx
+rtx_insn *
prev_nonnote_nondebug_insn (rtx insn)
{
while (insn)
@@ -3341,14 +3341,14 @@ prev_nonnote_nondebug_insn (rtx insn)
break;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the next INSN, CALL_INSN or JUMP_INSN after INSN;
or 0, if there is none. This routine does not look inside
SEQUENCEs. */
-rtx
+rtx_insn *
next_real_insn (rtx insn)
{
while (insn)
@@ -3358,14 +3358,14 @@ next_real_insn (rtx insn)
break;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the last INSN, CALL_INSN or JUMP_INSN before INSN;
or 0, if there is none. This routine does not look inside
SEQUENCEs. */
-rtx
+rtx_insn *
prev_real_insn (rtx insn)
{
while (insn)
@@ -3375,7 +3375,7 @@ prev_real_insn (rtx insn)
break;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Return the last CALL_INSN in the current list, or 0 if there is none.
@@ -3409,7 +3409,7 @@ active_insn_p (const_rtx insn)
&& GET_CODE (PATTERN (insn)) != CLOBBER))));
}
-rtx
+rtx_insn *
next_active_insn (rtx insn)
{
while (insn)
@@ -3419,14 +3419,14 @@ next_active_insn (rtx insn)
break;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
/* Find the last insn before INSN that really does something. This routine
does not look inside SEQUENCEs. After reload this also skips over
standalone USE and CLOBBER insn. */
-rtx
+rtx_insn *
prev_active_insn (rtx insn)
{
while (insn)
@@ -3436,7 +3436,7 @@ prev_active_insn (rtx insn)
break;
}
- return insn;
+ return safe_as_a <rtx_insn *> (insn);
}
#ifdef HAVE_cc0
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 9e95ad8..9a2884a 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -2417,20 +2417,20 @@ extern rtx emit_use (rtx);
extern rtx make_insn_raw (rtx);
extern void add_function_usage_to (rtx, rtx);
extern rtx last_call_insn (void);
-extern rtx previous_insn (rtx);
-extern rtx next_insn (rtx);
-extern rtx prev_nonnote_insn (rtx);
-extern rtx prev_nonnote_insn_bb (rtx);
-extern rtx next_nonnote_insn (rtx);
-extern rtx next_nonnote_insn_bb (rtx);
-extern rtx prev_nondebug_insn (rtx);
-extern rtx next_nondebug_insn (rtx);
-extern rtx prev_nonnote_nondebug_insn (rtx);
-extern rtx next_nonnote_nondebug_insn (rtx);
-extern rtx prev_real_insn (rtx);
-extern rtx next_real_insn (rtx);
-extern rtx prev_active_insn (rtx);
-extern rtx next_active_insn (rtx);
+extern rtx_insn *previous_insn (rtx);
+extern rtx_insn *next_insn (rtx);
+extern rtx_insn *prev_nonnote_insn (rtx);
+extern rtx_insn *prev_nonnote_insn_bb (rtx);
+extern rtx_insn *next_nonnote_insn (rtx);
+extern rtx_insn *next_nonnote_insn_bb (rtx);
+extern rtx_insn *prev_nondebug_insn (rtx);
+extern rtx_insn *next_nondebug_insn (rtx);
+extern rtx_insn *prev_nonnote_nondebug_insn (rtx);
+extern rtx_insn *next_nonnote_nondebug_insn (rtx);
+extern rtx_insn *prev_real_insn (rtx);
+extern rtx_insn *next_real_insn (rtx);
+extern rtx_insn *prev_active_insn (rtx);
+extern rtx_insn *next_active_insn (rtx);
extern int active_insn_p (const_rtx);
extern rtx next_cc0_user (rtx);
extern rtx prev_cc0_setter (rtx);