2014-08-22 David Malcolm <dmalcolm@redhat.com>
+ * function.c (emit_initial_value_sets): Strengthen local "seq"
+ from rtx to rtx_insn *.
+ (instantiate_virtual_regs_in_insn): Likewise for param "insn" and
+ local "seq".
+ (instantiate_virtual_regs): Likewise for local "insn".
+ (assign_parm_setup_reg): Likewise for locals "linsn", "sinsn".
+ (reorder_blocks_1): Likewise for param "insns" and local "insn".
+ (expand_function_end): Likewise for locals "insn" and "seq".
+ (epilogue_done): Likewise for local "insn".
+ (thread_prologue_and_epilogue_insns): Likewise for locals "prev",
+ "last", "trial".
+ (reposition_prologue_and_epilogue_notes): Likewise for locals
+ "insn", "last", "note", "first".
+ (match_asm_constraints_1): Likewise for param "insn" and local "insns".
+ (pass_match_asm_constraints::execute): Likewise for local "insn".
+
+2014-08-22 David Malcolm <dmalcolm@redhat.com>
+
* output.h (final_scan_insn): Strengthen return type from rtx to
rtx_insn *.
(final_forward_branch_p): Likewise for param.
static struct temp_slot *find_temp_slot_from_address (rtx);
static void pad_to_arg_alignment (struct args_size *, int, struct args_size *);
static void pad_below (struct args_size *, enum machine_mode, tree);
-static void reorder_blocks_1 (rtx, tree, vec<tree> *);
+static void reorder_blocks_1 (rtx_insn *, tree, vec<tree> *);
static int all_blocks (tree, tree *);
static tree *get_block_vector (tree, int *);
extern tree debug_find_var_in_block_tree (tree, tree);
{
struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
int i;
- rtx seq;
+ rtx_insn *seq;
if (ivs == 0)
return 0;
registers present inside of insn. The result will be a valid insn. */
static void
-instantiate_virtual_regs_in_insn (rtx insn)
+instantiate_virtual_regs_in_insn (rtx_insn *insn)
{
HOST_WIDE_INT offset;
int insn_code, i;
bool any_change = false;
- rtx set, new_rtx, x, seq;
+ rtx set, new_rtx, x;
+ rtx_insn *seq;
/* There are some special cases to be handled first. */
set = single_set (insn);
static unsigned int
instantiate_virtual_regs (void)
{
- rtx insn;
+ rtx_insn *insn;
/* Compute the offsets to use for this function. */
in_arg_offset = FIRST_PARM_OFFSET (current_function_decl);
&& reg_mentioned_p (virtual_incoming_args_rtx,
XEXP (data->stack_parm, 0)))
{
- rtx linsn = get_last_insn ();
- rtx sinsn, set;
+ rtx_insn *linsn = get_last_insn ();
+ rtx_insn *sinsn;
+ rtx set;
/* Mark complex types separately. */
if (GET_CODE (parmreg) == CONCAT)
}
static void
-reorder_blocks_1 (rtx insns, tree current_block, vec<tree> *p_block_stack)
+reorder_blocks_1 (rtx_insn *insns, tree current_block,
+ vec<tree> *p_block_stack)
{
- rtx insn;
+ rtx_insn *insn;
tree prev_beg = NULL_TREE, prev_end = NULL_TREE;
for (insn = insns; insn; insn = NEXT_INSN (insn))
space for another stack frame. */
if (flag_stack_check == GENERIC_STACK_CHECK)
{
- rtx insn, seq;
+ rtx_insn *insn, *seq;
for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
if (CALL_P (insn))
EPILOGUE_BEG note and mark the insns as epilogue insns. */
FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR_FOR_FN (cfun)->preds)
{
- rtx prev, last, trial;
+ rtx_insn *prev, *last, *trial;
if (e->flags & EDGE_FALLTHRU)
continue;
)
{
basic_block bb = e->src;
- rtx insn = BB_END (bb);
+ rtx_insn *insn = BB_END (bb);
rtx ep_seq;
if (!CALL_P (insn)
if (prologue_insn_hash != NULL)
{
size_t len = htab_elements (prologue_insn_hash);
- rtx insn, last = NULL, note = NULL;
+ rtx_insn *insn, *last = NULL, *note = NULL;
/* Scan from the beginning until we reach the last prologue insn. */
/* ??? While we do have the CFG intact, there are two problems:
FOR_EACH_EDGE (e, ei, EXIT_BLOCK_PTR_FOR_FN (cfun)->preds)
{
- rtx insn, first = NULL, note = NULL;
+ rtx_insn *insn, *first = NULL, *note = NULL;
basic_block bb = e->src;
/* Scan from the beginning until we reach the first epilogue insn. */
asm ("": "=mr" (inout_2) : "0" (inout_2)); */
static void
-match_asm_constraints_1 (rtx insn, rtx *p_sets, int noutputs)
+match_asm_constraints_1 (rtx_insn *insn, rtx *p_sets, int noutputs)
{
int i;
bool changed = false;
memset (output_matched, 0, noutputs * sizeof (bool));
for (i = 0; i < ninputs; i++)
{
- rtx input, output, insns;
+ rtx input, output;
+ rtx_insn *insns;
const char *constraint = ASM_OPERANDS_INPUT_CONSTRAINT (op, i);
char *end;
int match, j;
pass_match_asm_constraints::execute (function *fun)
{
basic_block bb;
- rtx insn, pat, *p_sets;
+ rtx_insn *insn;
+ rtx pat, *p_sets;
int noutputs;
if (!crtl->has_asm_statement)