summaryrefslogtreecommitdiff
path: root/gcc/var-tracking.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/var-tracking.c')
-rw-r--r--gcc/var-tracking.c197
1 files changed, 76 insertions, 121 deletions
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index adccf7caa0d..f5ba115bcfe 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -192,8 +192,6 @@ typedef struct micro_operation_def
} u;
} micro_operation;
-DEF_VEC_O(micro_operation);
-DEF_VEC_ALLOC_O(micro_operation,heap);
/* A declaration of a variable, or an RTL value being handled like a
declaration. */
@@ -264,7 +262,7 @@ typedef struct dataflow_set_def
typedef struct variable_tracking_info_def
{
/* The vector of micro operations. */
- VEC(micro_operation, heap) *mos;
+ vec<micro_operation> mos;
/* The IN and OUT set for dataflow analysis. */
dataflow_set in;
@@ -317,7 +315,6 @@ typedef struct loc_exp_dep_s
struct loc_exp_dep_s **pprev;
} loc_exp_dep;
-DEF_VEC_O (loc_exp_dep);
/* This data structure holds information about the depth of a variable
expansion. */
@@ -352,7 +349,7 @@ struct onepart_aux
/* The depth of the cur_loc expression. */
expand_depth depth;
/* Dependencies actively used when expand FROM into cur_loc. */
- VEC (loc_exp_dep, none) deps;
+ vec<loc_exp_dep, va_heap, vl_embed> deps;
};
/* Structure describing one part of variable. */
@@ -499,11 +496,9 @@ typedef struct GTY(()) parm_reg {
rtx incoming;
} parm_reg_t;
-DEF_VEC_O(parm_reg_t);
-DEF_VEC_ALLOC_O(parm_reg_t, gc);
/* Vector of windowed parameter registers, if any. */
-static VEC(parm_reg_t, gc) *windowed_parm_regs = NULL;
+static vec<parm_reg_t, va_gc> *windowed_parm_regs = NULL;
#endif
/* Variable used to tell whether cselib_process_insn called our hook. */
@@ -1079,11 +1074,11 @@ adjust_insn (basic_block bb, rtx insn)
if (RTX_FRAME_RELATED_P (insn)
&& find_reg_note (insn, REG_CFA_WINDOW_SAVE, NULL_RTX))
{
- unsigned int i, nregs = VEC_length(parm_reg_t, windowed_parm_regs);
+ unsigned int i, nregs = vec_safe_length (windowed_parm_regs);
rtx rtl = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (nregs * 2));
parm_reg_t *p;
- FOR_EACH_VEC_ELT (parm_reg_t, windowed_parm_regs, i, p)
+ FOR_EACH_VEC_SAFE_ELT (windowed_parm_regs, i, p)
{
XVECEXP (rtl, 0, i * 2)
= gen_rtx_SET (VOIDmode, p->incoming, p->outgoing);
@@ -5296,7 +5291,7 @@ log_op_type (rtx x, basic_block bb, rtx insn,
enum micro_operation_type mopt, FILE *out)
{
fprintf (out, "bb %i op %i insn %i %s ",
- bb->index, VEC_length (micro_operation, VTI (bb)->mos),
+ bb->index, VTI (bb)->mos.length (),
INSN_UID (insn), micro_operation_type_name[mopt]);
print_inline_rtx (out, x, 2);
fputc ('\n', out);
@@ -5321,7 +5316,7 @@ log_op_type (rtx x, basic_block bb, rtx insn,
(RTL_FLAG_CHECK1 ("VAL_EXPR_IS_CLOBBERED", (x), CONCAT)->unchanging)
/* All preserved VALUEs. */
-static VEC (rtx, heap) *preserved_values;
+static vec<rtx> preserved_values;
/* Ensure VAL is preserved and remember it in a vector for vt_emit_notes. */
@@ -5329,7 +5324,7 @@ static void
preserve_value (cselib_val *val)
{
cselib_preserve_value (val);
- VEC_safe_push (rtx, heap, preserved_values, val->val_rtx);
+ preserved_values.safe_push (val->val_rtx);
}
/* Helper function for MO_VAL_LOC handling. Return non-zero if
@@ -5512,7 +5507,7 @@ add_uses (rtx *ploc, void *data)
if (dump_file && (dump_flags & TDF_DETAILS))
log_op_type (mo.u.loc, cui->bb, cui->insn, mo.type, dump_file);
- VEC_safe_push (micro_operation, heap, VTI (bb)->mos, mo);
+ VTI (bb)->mos.safe_push (mo);
}
return 0;
@@ -5801,7 +5796,7 @@ add_stores (rtx loc, const_rtx expr, void *cuip)
if (dump_file && (dump_flags & TDF_DETAILS))
log_op_type (moa.u.loc, cui->bb, cui->insn,
moa.type, dump_file);
- VEC_safe_push (micro_operation, heap, VTI (bb)->mos, moa);
+ VTI (bb)->mos.safe_push (moa);
}
resolve = false;
@@ -5888,7 +5883,7 @@ add_stores (rtx loc, const_rtx expr, void *cuip)
log_and_return:
if (dump_file && (dump_flags & TDF_DETAILS))
log_op_type (mo.u.loc, cui->bb, cui->insn, mo.type, dump_file);
- VEC_safe_push (micro_operation, heap, VTI (bb)->mos, mo);
+ VTI (bb)->mos.safe_push (mo);
}
/* Arguments to the call. */
@@ -6156,15 +6151,15 @@ prepare_call_arguments (basic_block bb, rtx insn)
&& TREE_CODE (fndecl) == FUNCTION_DECL
&& DECL_HAS_DEBUG_ARGS_P (fndecl))
{
- VEC(tree, gc) **debug_args = decl_debug_args_lookup (fndecl);
+ vec<tree, va_gc> **debug_args = decl_debug_args_lookup (fndecl);
if (debug_args)
{
unsigned int ix;
tree param;
- for (ix = 0; VEC_iterate (tree, *debug_args, ix, param); ix += 2)
+ for (ix = 0; vec_safe_iterate (*debug_args, ix, &param); ix += 2)
{
rtx item;
- tree dtemp = VEC_index (tree, *debug_args, ix + 1);
+ tree dtemp = (**debug_args)[ix + 1];
enum machine_mode mode = DECL_MODE (dtemp);
item = gen_rtx_DEBUG_PARAMETER_REF (mode, param);
item = gen_rtx_CONCAT (mode, item, DECL_RTL_KNOWN_SET (dtemp));
@@ -6247,11 +6242,11 @@ add_with_sets (rtx insn, struct cselib_set *sets, int n_sets)
cui.sets = sets;
cui.n_sets = n_sets;
- n1 = VEC_length (micro_operation, VTI (bb)->mos);
+ n1 = VTI (bb)->mos.length ();
cui.store_p = false;
note_uses (&PATTERN (insn), add_uses_1, &cui);
- n2 = VEC_length (micro_operation, VTI (bb)->mos) - 1;
- mos = VEC_address (micro_operation, VTI (bb)->mos);
+ n2 = VTI (bb)->mos.length () - 1;
+ mos = VTI (bb)->mos.address ();
/* Order the MO_USEs to be before MO_USE_NO_VARs and MO_VAL_USE, and
MO_VAL_LOC last. */
@@ -6271,7 +6266,7 @@ add_with_sets (rtx insn, struct cselib_set *sets, int n_sets)
}
}
- n2 = VEC_length (micro_operation, VTI (bb)->mos) - 1;
+ n2 = VTI (bb)->mos.length () - 1;
while (n1 < n2)
{
while (n1 < n2 && mos[n1].type != MO_VAL_LOC)
@@ -6299,17 +6294,17 @@ add_with_sets (rtx insn, struct cselib_set *sets, int n_sets)
if (dump_file && (dump_flags & TDF_DETAILS))
log_op_type (PATTERN (insn), bb, insn, mo.type, dump_file);
- VEC_safe_push (micro_operation, heap, VTI (bb)->mos, mo);
+ VTI (bb)->mos.safe_push (mo);
}
- n1 = VEC_length (micro_operation, VTI (bb)->mos);
+ n1 = VTI (bb)->mos.length ();
/* This will record NEXT_INSN (insn), such that we can
insert notes before it without worrying about any
notes that MO_USEs might emit after the insn. */
cui.store_p = true;
note_stores (PATTERN (insn), add_stores, &cui);
- n2 = VEC_length (micro_operation, VTI (bb)->mos) - 1;
- mos = VEC_address (micro_operation, VTI (bb)->mos);
+ n2 = VTI (bb)->mos.length () - 1;
+ mos = VTI (bb)->mos.address ();
/* Order the MO_VAL_USEs first (note_stores does nothing
on DEBUG_INSNs, so there are no MO_VAL_LOCs from this
@@ -6330,7 +6325,7 @@ add_with_sets (rtx insn, struct cselib_set *sets, int n_sets)
}
}
- n2 = VEC_length (micro_operation, VTI (bb)->mos) - 1;
+ n2 = VTI (bb)->mos.length () - 1;
while (n1 < n2)
{
while (n1 < n2 && mos[n1].type == MO_CLOBBER)
@@ -6426,7 +6421,7 @@ compute_bb_dataflow (basic_block bb)
dataflow_set_copy (&old_out, out);
dataflow_set_copy (out, in);
- FOR_EACH_VEC_ELT (micro_operation, VTI (bb)->mos, i, mo)
+ FOR_EACH_VEC_ELT (VTI (bb)->mos, i, mo)
{
rtx insn = mo->insn;
@@ -7734,11 +7729,6 @@ delete_variable_part (dataflow_set *set, rtx loc, decl_or_value dv,
delete_slot_part (set, loc, slot, offset);
}
-DEF_VEC_P (variable);
-DEF_VEC_ALLOC_P (variable, heap);
-
-DEF_VEC_ALLOC_P_STACK (rtx);
-#define VEC_rtx_stack_alloc(alloc) VEC_stack_alloc (rtx, alloc)
/* Structure for passing some other parameters to function
vt_expand_loc_callback. */
@@ -7749,7 +7739,7 @@ struct expand_loc_callback_data
/* Stack of values and debug_exprs under expansion, and their
children. */
- VEC (rtx, stack) *expanding;
+ vec<rtx, va_stack> expanding;
/* Stack of values and debug_exprs whose expansion hit recursion
cycles. They will have VALUE_RECURSED_INTO marked when added to
@@ -7757,7 +7747,7 @@ struct expand_loc_callback_data
resolves to a valid location. So, if the flag remains set at the
end of the search, we know no valid location for this one can
possibly exist. */
- VEC (rtx, stack) *pending;
+ vec<rtx, va_stack> pending;
/* The maximum depth among the sub-expressions under expansion.
Zero indicates no expansion so far. */
@@ -7782,14 +7772,14 @@ loc_exp_dep_alloc (variable var, int count)
in the algorithm, so we instead leave an assertion to catch
errors. */
gcc_checking_assert (!count
- || VEC_empty (loc_exp_dep, VAR_LOC_DEP_VEC (var)));
+ || VAR_LOC_DEP_VEC (var) == NULL
+ || VAR_LOC_DEP_VEC (var)->is_empty ());
- if (VAR_LOC_1PAUX (var)
- && VEC_space (loc_exp_dep, VAR_LOC_DEP_VEC (var), count))
+ if (VAR_LOC_1PAUX (var) && VAR_LOC_DEP_VEC (var)->space (count))
return;
allocsize = offsetof (struct onepart_aux, deps)
- + VEC_embedded_size (loc_exp_dep, count);
+ + vec<loc_exp_dep, va_heap, vl_embed>::embedded_size (count);
if (VAR_LOC_1PAUX (var))
{
@@ -7809,7 +7799,7 @@ loc_exp_dep_alloc (variable var, int count)
VAR_LOC_DEPTH (var).complexity = 0;
VAR_LOC_DEPTH (var).entryvals = 0;
}
- VEC_embedded_init (loc_exp_dep, VAR_LOC_DEP_VEC (var), count);
+ VAR_LOC_DEP_VEC (var)->embedded_init (count);
}
/* Remove all entries from the vector of active dependencies of VAR,
@@ -7818,14 +7808,14 @@ loc_exp_dep_alloc (variable var, int count)
static void
loc_exp_dep_clear (variable var)
{
- while (!VEC_empty (loc_exp_dep, VAR_LOC_DEP_VEC (var)))
+ while (VAR_LOC_DEP_VEC (var) && !VAR_LOC_DEP_VEC (var)->is_empty ())
{
- loc_exp_dep *led = &VEC_last (loc_exp_dep, VAR_LOC_DEP_VEC (var));
+ loc_exp_dep *led = &VAR_LOC_DEP_VEC (var)->last ();
if (led->next)
led->next->pprev = led->pprev;
if (led->pprev)
*led->pprev = led->next;
- VEC_pop (loc_exp_dep, VAR_LOC_DEP_VEC (var));
+ VAR_LOC_DEP_VEC (var)->pop ();
}
}
@@ -7865,8 +7855,8 @@ loc_exp_insert_dep (variable var, rtx x, htab_t vars)
{
loc_exp_dep empty;
memset (&empty, 0, sizeof (empty));
- VEC_quick_push (loc_exp_dep, VAR_LOC_DEP_VEC (var), empty);
- led = &VEC_last (loc_exp_dep, VAR_LOC_DEP_VEC (var));
+ VAR_LOC_DEP_VEC (var)->quick_push (empty);
+ led = &VAR_LOC_DEP_VEC (var)->last ();
}
led->dv = var->dv;
led->value = x;
@@ -7888,7 +7878,8 @@ loc_exp_dep_set (variable var, rtx result, rtx *value, int count, htab_t vars)
{
bool pending_recursion = false;
- gcc_checking_assert (VEC_empty (loc_exp_dep, VAR_LOC_DEP_VEC (var)));
+ gcc_checking_assert (VAR_LOC_DEP_VEC (var) == NULL
+ || VAR_LOC_DEP_VEC (var)->is_empty ());
/* Set up all dependencies from last_child (as set up at the end of
the loop above) to the end. */
@@ -8032,7 +8023,7 @@ vt_expand_var_loc_chain (variable var, bitmap regs, void *data, bool *pendrecp)
}
first_child = result_first_child = last_child
- = VEC_length (rtx, elcd->expanding);
+ = elcd->expanding.length ();
wanted_entryvals = found_entryvals;
@@ -8061,7 +8052,7 @@ vt_expand_var_loc_chain (variable var, bitmap regs, void *data, bool *pendrecp)
elcd->depth.complexity = elcd->depth.entryvals = 0;
result = cselib_expand_value_rtx_cb (loc_from, regs, EXPR_DEPTH,
vt_expand_loc_callback, data);
- last_child = VEC_length (rtx, elcd->expanding);
+ last_child = elcd->expanding.length ();
if (result)
{
@@ -8105,16 +8096,16 @@ vt_expand_var_loc_chain (variable var, bitmap regs, void *data, bool *pendrecp)
attempted locs as dependencies, so that we retry the
expansion should any of them change, in the hope it can give
us a new entry without an ENTRY_VALUE? */
- VEC_truncate (rtx, elcd->expanding, first_child);
+ elcd->expanding.truncate (first_child);
goto retry;
}
/* Register all encountered dependencies as active. */
pending_recursion = loc_exp_dep_set
- (var, result, VEC_address (rtx, elcd->expanding) + result_first_child,
+ (var, result, elcd->expanding.address () + result_first_child,
last_child - result_first_child, elcd->vars);
- VEC_truncate (rtx, elcd->expanding, first_child);
+ elcd->expanding.truncate (first_child);
/* Record where the expansion came from. */
gcc_checking_assert (!result || !pending_recursion);
@@ -8183,7 +8174,7 @@ vt_expand_loc_callback (rtx x, bitmap regs,
return x;
}
- VEC_safe_push (rtx, stack, elcd->expanding, x);
+ elcd->expanding.safe_push (x);
/* Check that VALUE_RECURSED_INTO implies NO_LOC_P. */
gcc_checking_assert (!VALUE_RECURSED_INTO (x) || NO_LOC_P (x));
@@ -8227,7 +8218,7 @@ vt_expand_loc_callback (rtx x, bitmap regs,
if (pending_recursion)
{
gcc_checking_assert (!result);
- VEC_safe_push (rtx, stack, elcd->pending, x);
+ elcd->pending.safe_push (x);
}
else
{
@@ -8257,11 +8248,11 @@ vt_expand_loc_callback (rtx x, bitmap regs,
This function performs this finalization of NULL locations. */
static void
-resolve_expansions_pending_recursion (VEC (rtx, stack) *pending)
+resolve_expansions_pending_recursion (vec<rtx, va_stack> pending)
{
- while (!VEC_empty (rtx, pending))
+ while (!pending.is_empty ())
{
- rtx x = VEC_pop (rtx, pending);
+ rtx x = pending.pop ();
decl_or_value dv;
if (!VALUE_RECURSED_INTO (x))
@@ -8276,13 +8267,13 @@ resolve_expansions_pending_recursion (VEC (rtx, stack) *pending)
}
/* Initialize expand_loc_callback_data D with variable hash table V.
- It must be a macro because of alloca (VEC stack). */
+ It must be a macro because of alloca (vec stack). */
#define INIT_ELCD(d, v) \
do \
{ \
(d).vars = (v); \
- (d).expanding = VEC_alloc (rtx, stack, 4); \
- (d).pending = VEC_alloc (rtx, stack, 4); \
+ vec_stack_alloc (rtx, (d).expanding, 4); \
+ vec_stack_alloc (rtx, (d).pending, 4); \
(d).depth.complexity = (d).depth.entryvals = 0; \
} \
while (0)
@@ -8291,8 +8282,8 @@ resolve_expansions_pending_recursion (VEC (rtx, stack) *pending)
do \
{ \
resolve_expansions_pending_recursion ((d).pending); \
- VEC_free (rtx, stack, (d).pending); \
- VEC_free (rtx, stack, (d).expanding); \
+ (d).pending.release (); \
+ (d).expanding.release (); \
\
if ((l) && MEM_P (l)) \
(l) = targetm.delegitimize_address (l); \
@@ -8339,7 +8330,7 @@ vt_expand_1pvar (variable var, htab_t vars)
loc = vt_expand_var_loc_chain (var, scratch_regs, &data, NULL);
- gcc_checking_assert (VEC_empty (rtx, data.expanding));
+ gcc_checking_assert (data.expanding.is_empty ());
FINI_ELCD (data, loc);
@@ -8585,14 +8576,13 @@ emit_note_insn_var_location (void **varp, void *data)
static int
values_to_stack (void **slot, void *data)
{
- VEC (rtx, stack) **changed_values_stack = (VEC (rtx, stack) **)data;
+ vec<rtx, va_stack> *changed_values_stack = (vec<rtx, va_stack> *) data;
variable var = (variable) *slot;
if (var->onepart == ONEPART_VALUE)
- VEC_safe_push (rtx, stack, *changed_values_stack, dv_as_value (var->dv));
+ changed_values_stack->safe_push (dv_as_value (var->dv));
else if (var->onepart == ONEPART_DEXPR)
- VEC_safe_push (rtx, stack, *changed_values_stack,
- DECL_RTL_KNOWN_SET (dv_as_decl (var->dv)));
+ changed_values_stack->safe_push (DECL_RTL_KNOWN_SET (dv_as_decl (var->dv)));
return 1;
}
@@ -8620,7 +8610,7 @@ remove_value_from_changed_variables (rtx val)
static void
notify_dependents_of_changed_value (rtx val, htab_t htab,
- VEC (rtx, stack) **changed_values_stack)
+ vec<rtx, va_stack> *changed_values_stack)
{
void **slot;
variable var;
@@ -8661,7 +8651,7 @@ notify_dependents_of_changed_value (rtx val, htab_t htab,
case ONEPART_VALUE:
case ONEPART_DEXPR:
set_dv_changed (ldv, true);
- VEC_safe_push (rtx, stack, *changed_values_stack, dv_as_rtx (ldv));
+ changed_values_stack->safe_push (dv_as_rtx (ldv));
break;
case ONEPART_VDECL:
@@ -8706,17 +8696,19 @@ process_changed_values (htab_t htab)
{
int i, n;
rtx val;
- VEC (rtx, stack) *changed_values_stack = VEC_alloc (rtx, stack, 20);
+ vec<rtx, va_stack> changed_values_stack;
+
+ vec_stack_alloc (rtx, changed_values_stack, 20);
/* Move values from changed_variables to changed_values_stack. */
htab_traverse (changed_variables, values_to_stack, &changed_values_stack);
/* Back-propagate change notifications in values while popping
them from the stack. */
- for (n = i = VEC_length (rtx, changed_values_stack);
- i > 0; i = VEC_length (rtx, changed_values_stack))
+ for (n = i = changed_values_stack.length ();
+ i > 0; i = changed_values_stack.length ())
{
- val = VEC_pop (rtx, changed_values_stack);
+ val = changed_values_stack.pop ();
notify_dependents_of_changed_value (val, htab, &changed_values_stack);
/* This condition will hold when visiting each of the entries
@@ -8730,7 +8722,7 @@ process_changed_values (htab_t htab)
}
}
- VEC_free (rtx, stack, changed_values_stack);
+ changed_values_stack.release ();
}
/* Emit NOTE_INSN_VAR_LOCATION note for each variable from a chain
@@ -8899,7 +8891,7 @@ emit_notes_in_bb (basic_block bb, dataflow_set *set)
dataflow_set_clear (set);
dataflow_set_copy (set, &VTI (bb)->in);
- FOR_EACH_VEC_ELT (micro_operation, VTI (bb)->mos, i, mo)
+ FOR_EACH_VEC_ELT (VTI (bb)->mos, i, mo)
{
rtx insn = mo->insn;
rtx next_insn = next_non_note_insn_var_location (insn);
@@ -9361,7 +9353,7 @@ vt_add_function_parameter (tree parm)
= gen_rtx_REG_offset (incoming, GET_MODE (incoming),
OUTGOING_REGNO (REGNO (incoming)), 0);
p.outgoing = incoming;
- VEC_safe_push (parm_reg_t, gc, windowed_parm_regs, p);
+ vec_safe_push (windowed_parm_regs, p);
}
else if (MEM_P (incoming)
&& REG_P (XEXP (incoming, 0))
@@ -9374,7 +9366,7 @@ vt_add_function_parameter (tree parm)
p.incoming = reg;
reg = gen_raw_REG (GET_MODE (reg), OUTGOING_REGNO (REGNO (reg)));
p.outgoing = reg;
- VEC_safe_push (parm_reg_t, gc, windowed_parm_regs, p);
+ vec_safe_push (windowed_parm_regs, p);
incoming = replace_equiv_address_nv (incoming, reg);
}
}
@@ -9530,40 +9522,6 @@ vt_add_function_parameters (void)
}
}
-/* Return true if INSN in the prologue initializes hard_frame_pointer_rtx. */
-
-static bool
-fp_setter (rtx insn)
-{
- rtx pat = PATTERN (insn);
- if (RTX_FRAME_RELATED_P (insn))
- {
- rtx expr = find_reg_note (insn, REG_FRAME_RELATED_EXPR, NULL_RTX);
- if (expr)
- pat = XEXP (expr, 0);
- }
- if (GET_CODE (pat) == SET)
- {
- if (SET_DEST (pat) != hard_frame_pointer_rtx)
- return false;
- }
- else if (GET_CODE (pat) == PARALLEL)
- {
- int i;
- for (i = XVECLEN (pat, 0) - 1; i >= 0; i--)
- if (GET_CODE (XVECEXP (pat, 0, i)) == SET
- && SET_DEST (XVECEXP (pat, 0, i)) == hard_frame_pointer_rtx)
- break;
- if (i < 0)
- return false;
- }
- else
- return false;
- if (find_reg_note (insn, REG_CFA_RESTORE, hard_frame_pointer_rtx))
- return false;
- return true;
-}
-
/* Initialize cfa_base_rtx, create a preserved VALUE for it and
ensure it isn't flushed during cselib_reset_table.
Can be called only if frame_pointer_rtx resp. arg_pointer_rtx
@@ -9649,7 +9607,7 @@ vt_initialize (void)
scratch_regs = BITMAP_ALLOC (NULL);
valvar_pool = create_alloc_pool ("small variable_def pool",
sizeof (struct variable_def), 256);
- preserved_values = VEC_alloc (rtx, heap, 256);
+ preserved_values.create (256);
}
else
{
@@ -9830,8 +9788,7 @@ vt_initialize (void)
if (dump_file && (dump_flags & TDF_DETAILS))
log_op_type (PATTERN (insn), bb, insn,
MO_ADJUST, dump_file);
- VEC_safe_push (micro_operation, heap, VTI (bb)->mos,
- mo);
+ VTI (bb)->mos.safe_push (mo);
VTI (bb)->out.stack_adjust += pre;
}
}
@@ -9862,15 +9819,13 @@ vt_initialize (void)
if (dump_file && (dump_flags & TDF_DETAILS))
log_op_type (PATTERN (insn), bb, insn,
MO_ADJUST, dump_file);
- VEC_safe_push (micro_operation, heap, VTI (bb)->mos,
- mo);
+ VTI (bb)->mos.safe_push (mo);
VTI (bb)->out.stack_adjust += post;
}
if (fp_cfa_offset != -1
&& hard_frame_pointer_adjustment == -1
- && RTX_FRAME_RELATED_P (insn)
- && fp_setter (insn))
+ && fp_setter_insn (insn))
{
vt_init_cfa_base ();
hard_frame_pointer_adjustment = fp_cfa_offset;
@@ -9971,7 +9926,7 @@ vt_finalize (void)
FOR_EACH_BB (bb)
{
- VEC_free (micro_operation, heap, VTI (bb)->mos);
+ VTI (bb)->mos.release ();
}
FOR_ALL_BB (bb)
@@ -9998,14 +9953,14 @@ vt_finalize (void)
free_alloc_pool (loc_exp_dep_pool);
loc_exp_dep_pool = NULL;
free_alloc_pool (valvar_pool);
- VEC_free (rtx, heap, preserved_values);
+ preserved_values.release ();
cselib_finish ();
BITMAP_FREE (scratch_regs);
scratch_regs = NULL;
}
#ifdef HAVE_window_save
- VEC_free (parm_reg_t, gc, windowed_parm_regs);
+ vec_free (windowed_parm_regs);
#endif
if (vui_vec)