/* For callees, we want to remember the Call nodes, too. */
typedef struct ana_entry2 {
ir_loop **loop_stack; /**< a stack of ir_loop entries */
- int tos; /**< the top of stack entry */
+ size_t tos; /**< the top of stack entry */
int recursion_nesting;
} ana_entry2;
*/
static int in_stack(ana_entry2 *e, ir_loop *g)
{
- int i;
- for (i = e->tos-1; i >= 0; --i) {
- if (e->loop_stack[i] == g) return 1;
+ size_t i;
+ for (i = e->tos; i != 0;) {
+ if (e->loop_stack[--i] == g) return 1;
}
return 0;
}
/** An IR-node stack */
static ir_node **stack = NULL;
/** The top (index) of the IR-node stack */
-static int tos = 0;
+static size_t tos = 0;
/**
* Initializes the IR-node stack
static ir_node *find_tail(ir_node *n)
{
ir_node *m;
- int i, res_index = -2;
+ int res_index = -2;
+ size_t i;
- m = stack[tos-1]; /* tos = top of stack */
+ m = stack[tos - 1]; /* tos = top of stack */
if (is_head(m, n)) {
res_index = smallest_dfn_pred(m, 0);
if ((res_index == -2) && /* no smallest dfn pred found. */
} else {
if (m == n)
return NULL;
- for (i = tos-2; i >= 0; --i) {
-
- m = stack[i];
+ for (i = tos - 1; i != 0;) {
+ m = stack[--i];
if (is_head(m, n)) {
res_index = smallest_dfn_pred(m, get_irn_dfn(m) + 1);
if (res_index == -2) /* no smallest dfn pred found. */
res_index = largest_dfn_pred(m);
if ((m == n) && (res_index == -2)) {
- i = -1;
+ i = (size_t)-1;
}
break;
}
/* We should not walk past our selves on the stack: The upcoming nodes
are not in this loop. We assume a loop not reachable from Start. */
if (m == n) {
- i = -1;
+ i = (size_t)-1;
break;
}
}
- if (i < 0) {
+ if (i == (size_t)-1) {
/* A dead loop not reachable from Start. */
- for (i = tos-2; i >= 0; --i) {
- m = stack[i];
+ for (i = tos - 1; i != 0;) {
+ m = stack[--i];
if (is_endless_head(m, n)) {
res_index = smallest_dfn_pred (m, get_irn_dfn(m) + 1);
if (res_index == -2) /* no smallest dfn pred found. */
*/
static void replace_pred(ir_region *succ, ir_region *reg)
{
- int i, len = get_region_n_preds(succ);
- int have_one = 0;
+ int have_one = 0;
+ size_t len = get_region_n_preds(succ);
+ size_t i;
for (i = 0; i < len; ++i) {
ir_region *pred = get_region_pred(succ, i);
*/
static void replace_succ(ir_region *pred, ir_region *reg)
{
- int i, len = get_region_n_succs(pred);
- int have_one = 0;
+ int have_one = 0;
+ size_t len = get_region_n_succs(pred);
+ size_t i;
for (i = 0; i < len; ++i) {
ir_region *succ = get_region_succ(pred, i);
static ir_node *rsm_create_barrier(register_state_mapping_t *rsm,
ir_node *block)
{
- int n_barrier_outs = ARR_LEN(rsm->regs);
+ size_t n_barrier_outs = ARR_LEN(rsm->regs);
ir_node **in = rsm->value_map;
ir_node *barrier;
- int o;
+ size_t o;
assert(ARR_LEN(rsm->value_map) == n_barrier_outs);
ir_node *be_epilog_create_return(beabi_helper_env_t *env, dbg_info *dbgi,
ir_node *block)
{
- int n_return_in = ARR_LEN(env->epilog.regs);
+ size_t n_return_in = ARR_LEN(env->epilog.regs);
ir_node **in = env->epilog.value_map;
int n_res = 1; /* TODO */
unsigned pop = 0; /* TODO */
- int i;
+ size_t i;
ir_node *ret;
assert(ARR_LEN(env->epilog.value_map) == n_return_in);
static __attribute__((unused)) void chunk_order_nodes(co_mst_env_t *env, aff_chunk_t *chunk)
{
- pqueue_t *grow = new_pqueue();
- const ir_node *max_node = NULL;
- int max_weight = 0;
- int i;
+ pqueue_t *grow = new_pqueue();
+ ir_node const *max_node = NULL;
+ int max_weight = 0;
+ size_t i;
- for (i = ARR_LEN(chunk->n) - 1; i >= 0; i--) {
- const ir_node *irn = chunk->n[i];
+ for (i = ARR_LEN(chunk->n); i != 0;) {
+ const ir_node *irn = chunk->n[--i];
affinity_node_t *an = get_affinity_info(env->co, irn);
int w = 0;
neighb_t *neigh;
if (max_node) {
bitset_t *visited = bitset_irg_malloc(env->co->irg);
- for (i = ARR_LEN(chunk->n) - 1; i >= 0; --i)
- bitset_add_irn(visited, chunk->n[i]);
+ for (i = ARR_LEN(chunk->n); i != 0;)
+ bitset_add_irn(visited, chunk->n[--i]);
pqueue_put(grow, (void *) max_node, max_weight);
bitset_remv_irn(visited, max_node);
waitq *best_starts = NULL;
col_cost_t *order = ALLOCANZ(col_cost_t, env->n_regs);
bitset_t *visited;
- int idx, len, i, nidx, pos;
+ int i;
+ size_t idx;
+ size_t len;
+ size_t nidx;
+ size_t pos;
struct list_head changed;
DB((dbg, LEVEL_2, "fragmentizing chunk #%u", c->id));
{
const backend_info_t *info1 = be_get_info(node1);
const backend_info_t *info2 = be_get_info(node2);
- int len = ARR_LEN(info1->out_infos);
- int arity = get_irn_arity(node1);
- int i;
+ size_t len = ARR_LEN(info1->out_infos);
+ size_t arity = get_irn_arity(node1);
+ size_t i;
if (ARR_LEN(info2->out_infos) != len)
return false;
*/
static inline int is_already_scheduled(block_sched_env_t *env, ir_node *n)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
return env->sched_info[idx].already_sched;
*/
static inline void set_already_scheduled(block_sched_env_t *env, ir_node *n)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
env->sched_info[idx].already_sched = 1;
*/
static inline int get_irn_not_sched_user(block_sched_env_t *env, ir_node *n)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
return env->sched_info[idx].num_not_sched_user;
*/
static inline void set_irn_not_sched_user(block_sched_env_t *env, ir_node *n, int num)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
env->sched_info[idx].num_not_sched_user = num;
*/
static inline int add_irn_not_sched_user(block_sched_env_t *env, ir_node *n, int num)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
env->sched_info[idx].num_not_sched_user += num;
ir_nodeset_t y;
ir_nodeset_iterator_t iter;
child_t **sks = NEW_ARR_F(child_t *, 20);
- int cur_len = 0;
- int cur_size = 20;
- int i;
+ size_t cur_len = 0;
+ size_t cur_size = 20;
+ size_t i;
ir_nodeset_init_size(&x, 10);
ir_nodeset_init_size(&y, 10);
t = select_child_max_cost(rss, &x, &y, t, cbc);
if (cur_len >= cur_size) {
- ARR_EXTO(child_t *, sks, cur_size * 2);
cur_size *= 2;
+ ARR_EXTO(child_t *, sks, cur_size);
}
DBG((rss->dbg, LEVEL_2, "\t\tinsert child %+F (%.3f) into SKS at pos %d\n", t->irn, t->cost, cur_len));
DBG((rss->dbg, LEVEL_2, "\tprocessing SKS for cbc %d:\n", cbc->nr));
/* build killing function */
- for (i = cur_len - 1; i >= 0; --i) { /* loop over sks in decreasing cost order */
- child_t *t = sks[i];
+ for (i = cur_len; i != 0;) { /* loop over sks in decreasing cost order */
+ child_t *t = sks[--i];
rss_irn_t *rt = get_rss_irn(rss, t->irn);
plist_element_t *p_el;
*/
static inline unsigned is_root_node(trace_env_t *env, ir_node *n)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
return env->sched_info[idx].is_root;
*/
static inline void mark_root_node(trace_env_t *env, ir_node *n)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
env->sched_info[idx].is_root = 1;
*/
static inline sched_timestep_t get_irn_delay(trace_env_t *env, ir_node *n)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
return env->sched_info[idx].delay;
*/
static inline void set_irn_delay(trace_env_t *env, ir_node *n, sched_timestep_t delay)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
env->sched_info[idx].delay = delay;
*/
static inline sched_timestep_t get_irn_etime(trace_env_t *env, ir_node *n)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
return env->sched_info[idx].etime;
*/
static inline void set_irn_etime(trace_env_t *env, ir_node *n, sched_timestep_t etime)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
env->sched_info[idx].etime = etime;
*/
static inline unsigned get_irn_num_user(trace_env_t *env, ir_node *n)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
return env->sched_info[idx].num_user;
*/
static inline void set_irn_num_user(trace_env_t *env, ir_node *n, unsigned num_user)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
env->sched_info[idx].num_user = num_user;
*/
static inline int get_irn_reg_diff(trace_env_t *env, ir_node *n)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
return env->sched_info[idx].reg_diff;
*/
static inline void set_irn_reg_diff(trace_env_t *env, ir_node *n, int reg_diff)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
env->sched_info[idx].reg_diff = reg_diff;
*/
static inline int get_irn_preorder(trace_env_t *env, ir_node *n)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
return env->sched_info[idx].preorder;
*/
static inline void set_irn_preorder(trace_env_t *env, ir_node *n, int pos)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
env->sched_info[idx].preorder = pos;
*/
static inline unsigned get_irn_critical_path_len(trace_env_t *env, ir_node *n)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
return env->sched_info[idx].critical_path_len;
*/
static inline void set_irn_critical_path_len(trace_env_t *env, ir_node *n, unsigned len)
{
- int idx = get_irn_idx(n);
+ unsigned const idx = get_irn_idx(n);
assert(idx < ARR_LEN(env->sched_info));
env->sched_info[idx].critical_path_len = len;
}
pressure = be_get_loop_pressure(loop_ana, cls, loop);
- assert(ARR_LEN(delayed) <= (signed)pressure);
+ assert(ARR_LEN(delayed) <= pressure);
free_slots = n_regs - ARR_LEN(starters);
free_pressure_slots = n_regs - (pressure - ARR_LEN(delayed));
free_slots = MIN(free_slots, free_pressure_slots);
DB((dbg, DBG_START, "Loop pressure %d, taking %d delayed vals\n",
pressure, free_slots));
if (free_slots > 0) {
- int i;
+ size_t i;
+
qsort(delayed, ARR_LEN(delayed), sizeof(delayed[0]), loc_compare);
for (i = 0; i < ARR_LEN(delayed) && free_slots > 0; ++i) {
int spillcount = set_count(env->spills);
spill_slot_t *spillslots = ALLOCANZ(spill_slot_t, spillcount);
spill_t *spill;
- int i;
+ size_t i;
/* construct spillslots */
foreach_set(env->spills, spill_t*, spill) {
s += p;
}
- if (num < 0 || ARR_LEN(asm_regs) <= num) {
+ if (num < 0 || ARR_LEN(asm_regs) <= (size_t)num) {
ir_fprintf(stderr,
"Error: Custom assembler references invalid input/output (%+F)\n",
node);
/* Removes opcode from the list of opcodes and shrinks the list by one. */
void remove_irp_opcode(ir_op *opcode)
{
- assert((int) opcode->code < ARR_LEN(irp->opcodes));
+ assert(opcode->code < ARR_LEN(irp->opcodes));
irp->opcodes[opcode->code] = NULL;
}
SET_VNUM(sel, key->vnum);
DB((dbg, SET_LEVEL_3, " %+F represents value %u\n", sel, key->vnum));
- ARR_EXTO(ir_mode *, *modes, (int)((key->vnum + 15) & ~15));
+ ARR_EXTO(ir_mode *, *modes, (key->vnum + 15) & ~15);
(*modes)[key->vnum] = get_type_mode(get_entity_type(get_Sel_entity(sel)));