diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6fa5dfc1ae0..a754f707c3f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2014-08-26 David Malcolm + + * function.h (struct sequence_stack): Strengthen fields "first" + and "last" from rtx to rtx_insn *. + (struct emit_status): Likewise for fields "x_first_insn" and + "x_last_insn". + + * emit-rtl.h (get_insns): Remove now-redundant checked cast. + (set_first_insn): Add checked cast. + (get_last_insn): Remove now-redundant checked cast. + (set_last_insn): Add checked cast. + + * config/m32c/m32c.c (m32c_leaf_function_p): Strengthen locals + "saved_first" and "saved_last" from rtx to rtx_insn *. + 2014-08-26 David Malcolm * rtl.h (add_insn): Strengthen param from rtx to rtx_insn *. diff --git a/gcc/config/m32c/m32c.c b/gcc/config/m32c/m32c.c index 23fd1cc5935..1954c84d0b1 100644 --- a/gcc/config/m32c/m32c.c +++ b/gcc/config/m32c/m32c.c @@ -4045,7 +4045,7 @@ m32c_encode_section_info (tree decl, rtx rtl, int first) static int m32c_leaf_function_p (void) { - rtx saved_first, saved_last; + rtx_insn *saved_first, *saved_last; struct sequence_stack *seq; int rv; diff --git a/gcc/emit-rtl.h b/gcc/emit-rtl.h index e0deaffcdaa..e2e64a213d3 100644 --- a/gcc/emit-rtl.h +++ b/gcc/emit-rtl.h @@ -80,8 +80,7 @@ extern bool need_atomic_barrier_p (enum memmodel, bool); static inline rtx_insn * get_insns (void) { - rtx insn = crtl->emit.x_first_insn; - return safe_as_a (insn); + return crtl->emit.x_first_insn; } /* Specify a new insn as the first in the chain. */ @@ -90,7 +89,7 @@ static inline void set_first_insn (rtx insn) { gcc_checking_assert (!insn || !PREV_INSN (insn)); - crtl->emit.x_first_insn = insn; + crtl->emit.x_first_insn = safe_as_a (insn); } /* Return the last insn emitted in current sequence or current function. */ @@ -98,8 +97,7 @@ set_first_insn (rtx insn) static inline rtx_insn * get_last_insn (void) { - rtx insn = crtl->emit.x_last_insn; - return safe_as_a (insn); + return crtl->emit.x_last_insn; } /* Specify a new insn as the last in the chain. */ @@ -108,7 +106,7 @@ static inline void set_last_insn (rtx insn) { gcc_checking_assert (!insn || !NEXT_INSN (insn)); - crtl->emit.x_last_insn = insn; + crtl->emit.x_last_insn = safe_as_a (insn); } /* Return a number larger than any instruction's uid in this function. */ diff --git a/gcc/function.h b/gcc/function.h index 14d1b2c926a..28a20f34b98 100644 --- a/gcc/function.h +++ b/gcc/function.h @@ -34,8 +34,8 @@ along with GCC; see the file COPYING3. If not see struct GTY(()) sequence_stack { /* First and last insns in the chain of the saved sequence. */ - rtx first; - rtx last; + rtx_insn *first; + rtx_insn *last; struct sequence_stack *next; }; @@ -52,8 +52,8 @@ struct GTY(()) emit_status { start_sequence saves both of these on `sequence_stack' and then starts a new, nested sequence of insns. */ - rtx x_first_insn; - rtx x_last_insn; + rtx_insn *x_first_insn; + rtx_insn *x_last_insn; /* Stack of pending (incomplete) sequences saved by `start_sequence'. Each element describes one pending sequence.