2014-08-19 David Malcolm <dmalcolm@redhat.com>
+ * cfgexpand.c (expand_used_vars): Strengthen return type from rtx
+ to rtx_insn *; also for local "var_end_seq".
+ (maybe_dump_rtl_for_gimple_stmt): Likewise for param "since".
+ (maybe_cleanup_end_of_block): Likewise for param "last" and local
+ "insn".
+ (expand_gimple_cond): Likewise for locals "last2" and "last".
+ (mark_transaction_restart_calls): Likewise for local "insn".
+ (expand_gimple_stmt): Likewise for return type and locals "last"
+ and "insn".
+ (expand_gimple_tailcall): Likewise for locals "last2" and "last".
+ (avoid_complex_debug_insns): Likewise for param "insn".
+ (expand_debug_locations): Likewise for locals "insn", "last",
+ "prev_insn" and "insn2".
+ (expand_gimple_basic_block): Likewise for local "last".
+ (construct_exit_block): Likewise for locals "head", "end",
+ "orig_end".
+ (pass_expand::execute): Likewise for locals "var_seq",
+ "var_ret_seq", "next".
+
+2014-08-19 David Malcolm <dmalcolm@redhat.com>
+
* asan.h (asan_emit_stack_protection): Strengthen return type from
rtx to rtx_insn *.
* asan.c (asan_emit_stack_protection): Likewise. Add local
/* Expand all variables used in the function. */
-static rtx
+static rtx_insn *
expand_used_vars (void)
{
tree var, outer_block = DECL_INITIAL (current_function_decl);
vec<tree> maybe_local_decls = vNULL;
- rtx var_end_seq = NULL_RTX;
+ rtx_insn *var_end_seq = NULL;
unsigned i;
unsigned len;
bool gen_stack_protect_signal = false;
generated for STMT should have been appended. */
static void
-maybe_dump_rtl_for_gimple_stmt (gimple stmt, rtx since)
+maybe_dump_rtl_for_gimple_stmt (gimple stmt, rtx_insn *since)
{
if (dump_file && (dump_flags & TDF_DETAILS))
{
last instruction before the just emitted jump sequence. */
static void
-maybe_cleanup_end_of_block (edge e, rtx last)
+maybe_cleanup_end_of_block (edge e, rtx_insn *last)
{
/* Special case: when jumpif decides that the condition is
trivial it emits an unconditional jump (and the necessary
normally isn't there in a cleaned CFG), fix it here. */
if (BARRIER_P (get_last_insn ()))
{
- rtx insn;
+ rtx_insn *insn;
remove_edge (e);
/* Now, we have a single successor block, if we have insns to
insert on the remaining edge we potentially will insert
edge new_edge;
edge true_edge;
edge false_edge;
- rtx last2, last;
+ rtx_insn *last2, *last;
enum tree_code code;
tree op0, op1;
{
struct tm_restart_node *n = (struct tm_restart_node *) *slot;
tree list = n->label_or_list;
- rtx insn;
+ rtx_insn *insn;
for (insn = next_real_insn (get_last_insn ());
!CALL_P (insn);
sets REG_EH_REGION notes if necessary and sets the current source
location for diagnostics. */
-static rtx
+static rtx_insn *
expand_gimple_stmt (gimple stmt)
{
location_t saved_location = input_location;
- rtx last = get_last_insn ();
+ rtx_insn *last = get_last_insn ();
int lp_nr;
gcc_assert (cfun);
lp_nr = lookup_stmt_eh_lp (stmt);
if (lp_nr)
{
- rtx insn;
+ rtx_insn *insn;
for (insn = next_real_insn (last); insn;
insn = next_real_insn (insn))
{
static basic_block
expand_gimple_tailcall (basic_block bb, gimple stmt, bool *can_fallthru)
{
- rtx last2, last;
+ rtx_insn *last2, *last;
edge e;
edge_iterator ei;
int probability;
deeper than that, create DEBUG_EXPRs and emit DEBUG_INSNs before INSN. */
static void
-avoid_complex_debug_insns (rtx insn, rtx *exp_p, int depth)
+avoid_complex_debug_insns (rtx_insn *insn, rtx *exp_p, int depth)
{
rtx exp = *exp_p;
static void
expand_debug_locations (void)
{
- rtx insn;
- rtx last = get_last_insn ();
+ rtx_insn *insn;
+ rtx_insn *last = get_last_insn ();
int save_strict_alias = flag_strict_aliasing;
/* New alias sets while setting up memory attributes cause
if (DEBUG_INSN_P (insn))
{
tree value = (tree)INSN_VAR_LOCATION_LOC (insn);
- rtx val, prev_insn, insn2;
+ rtx val;
+ rtx_insn *prev_insn, *insn2;
enum machine_mode mode;
if (value == NULL_TREE)
gimple_stmt_iterator gsi;
gimple_seq stmts;
gimple stmt = NULL;
- rtx note, last;
+ rtx note;
+ rtx_insn *last;
edge e;
edge_iterator ei;
static void
construct_exit_block (void)
{
- rtx head = get_last_insn ();
- rtx end;
+ rtx_insn *head = get_last_insn ();
+ rtx_insn *end;
basic_block exit_block;
edge e, e2;
unsigned ix;
edge_iterator ei;
basic_block prev_bb = EXIT_BLOCK_PTR_FOR_FN (cfun)->prev_bb;
- rtx orig_end = BB_END (prev_bb);
+ rtx_insn *orig_end = BB_END (prev_bb);
rtl_profile_for_bb (EXIT_BLOCK_PTR_FOR_FN (cfun));
sbitmap blocks;
edge_iterator ei;
edge e;
- rtx var_seq, var_ret_seq;
+ rtx_insn *var_seq, *var_ret_seq;
unsigned i;
timevar_push (TV_OUT_OF_SSA);
if (var_ret_seq)
{
rtx after = return_label;
- rtx next = NEXT_INSN (after);
+ rtx_insn *next = NEXT_INSN (after);
if (next && NOTE_INSN_BASIC_BLOCK_P (next))
after = next;
emit_insn_after (var_ret_seq, after);