static double get_irg_callee_execution_frequency(const ir_graph *irg, int pos)
{
ir_node **arr = irg->callees[pos]->call_list;
- int i, n_Calls = ARR_LEN(arr);
+ size_t i, n_Calls = ARR_LEN(arr);
double freq = 0.0;
for (i = 0; i < n_Calls; ++i) {
/**********************************************************************/
static ir_graph **stack = NULL;
-static int tos = 0; /**< top of stack */
+static size_t tos = 0; /**< top of stack */
/**
* Initialize the irg stack.
static inline void push(ir_graph *irg)
{
if (tos == ARR_LEN(stack)) {
- int nlen = ARR_LEN(stack) * 2;
+ size_t nlen = ARR_LEN(stack) * 2;
ARR_RESIZE(ir_graph*, stack, nlen);
}
stack [tos++] = irg;
*/
static inline ir_graph *pop(void)
{
- ir_graph *irg = stack[--tos];
+ ir_graph *irg;
+
+ assert(tos > 0);
+ irg = stack[--tos];
mark_irg_not_in_stack(irg);
return irg;
}
*
* @param sel the Sel node
*/
-static int get_Sel_n_methods(ir_node * sel)
+static size_t get_Sel_n_methods(ir_node * sel)
{
return ARR_LEN(get_Sel_arr(sel));
}
/**
* Returns the ith possible called method entity at a Sel node.
*/
-static ir_entity * get_Sel_method(ir_node * sel, int pos)
+static ir_entity * get_Sel_method(ir_node * sel, size_t pos)
{
ir_entity ** arr = get_Sel_arr(sel);
- assert(pos >= 0 && pos < ARR_LEN(arr));
+ assert(pos < ARR_LEN(arr));
return arr[pos];
}
*/
static void free_mark(ir_node *node, eset * set)
{
- int i;
+ size_t i, n;
if (get_irn_link(node) == MARK)
return; /* already visited */
case iro_Sel: {
ir_entity *ent = get_Sel_entity(node);
if (is_method_entity(ent)) {
- for (i = get_Sel_n_methods(node) - 1; i >= 0; --i) {
+ for (i = 0, n = get_Sel_n_methods(node); i < n; ++i) {
eset_insert(set, get_Sel_method(node, i));
}
}
break;
case iro_Phi:
- for (i = get_Phi_n_preds(node) - 1; i >= 0; --i) {
+ {
+ int i, n;
+ for (i = 0, n = get_Phi_n_preds(node); i < n; ++i) {
free_mark(get_Phi_pred(node, i), set);
}
break;
+ }
case iro_Proj:
free_mark_proj(get_Proj_pred(node), get_Proj_proj(node), set);
break;
*/
static void callee_ana_node(ir_node *node, eset *methods)
{
- int i;
-
assert(mode_is_reference(get_irn_mode(node)) || is_Bad(node));
/* Beware of recursion */
if (get_irn_link(node) == MARK) {
break;
}
- case iro_Sel:
+ case iro_Sel: {
/* polymorphic method */
- for (i = get_Sel_n_methods(node) - 1; i >= 0; --i) {
+ size_t i, n;
+ for (i = 0, n = get_Sel_n_methods(node); i < n; ++i) {
ir_entity *ent = get_Sel_method(node, i);
if (ent != NULL) {
eset_insert(methods, ent);
}
}
break;
+ }
case iro_Bad:
/* nothing */
break;
- case iro_Phi:
+ case iro_Phi: {
+ int i;
for (i = get_Phi_n_preds(node) - 1; i >= 0; --i) {
callee_ana_node(get_Phi_pred(node, i), methods);
}
break;
+ }
case iro_Mux:
callee_ana_node(get_Mux_false(node), methods);
eset *methods = eset_create();
ir_entity *ent;
ir_entity **arr;
- int i;
+ size_t i;
callee_ana_node(get_Call_ptr(call), methods);
arr = NEW_ARR_F(ir_entity *, eset_count(methods));
int get_region_n_ins(void *region)
{
- return ARR_LEN(get_region_attr(region)->in_array);
+ return (int)ARR_LEN(get_region_attr(region)->in_array);
}
void *get_region_in(void *region, int pos)
}
/* Allocate a new backedge array on the obstack for given size. */
-bitset_t *new_backedge_arr(struct obstack *obst, unsigned size)
+bitset_t *new_backedge_arr(struct obstack *obst, size_t size)
{
return bitset_obstack_alloc(obst, size);
}
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
* @param obst the obstack to allocate the array on
* @param size the size of the backedge array
*/
-bitset_t *new_backedge_arr(struct obstack *obst, unsigned size);
+bitset_t *new_backedge_arr(struct obstack *obst, size_t size);
/**
* Adapts backedges array to new size.
static inline void push(ir_node *n)
{
if (tos == ARR_LEN(stack)) {
- int nlen = ARR_LEN(stack) * 2;
+ size_t nlen = ARR_LEN(stack) * 2;
ARR_RESIZE(ir_node *, stack, nlen);
}
stack[tos++] = n;
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
static inline int _get_extbb_n_blocks(const ir_extblk *blk)
{
assert(blk);
- return ARR_LEN(blk->blks);
+ return (int)ARR_LEN(blk->blks);
}
/**
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
/**********************************************************************/
static ir_node **stack = NULL;
-static int tos = 0; /* top of stack */
+static size_t tos = 0; /* top of stack */
/**
* initializes the stack
static inline void push(ir_node *n)
{
if (tos == ARR_LEN(stack)) {
- int nlen = ARR_LEN(stack) * 2;
+ size_t nlen = ARR_LEN(stack) * 2;
ARR_RESIZE(ir_node *, stack, nlen);
}
- stack [tos++] = n;
+ stack[tos++] = n;
mark_irn_in_stack(n);
}
*/
static inline ir_node *pop(void)
{
- ir_node *n = stack[--tos];
+ ir_node *n;
+
+ assert(tos > 0);
+ n = stack[--tos];
mark_irn_not_in_stack(n);
return n;
}
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
{
ir_entity *entity = get_irg_entity(irg);
ir_node **blk_sched;
- int i, n;
+ size_t i, n;
/* register all emitter functions */
amd64_register_emitters();
if (arg->in_reg) {
/* remove register from destroyed regs */
- int j;
- int n = ARR_LEN(destroyed_regs);
+ size_t j;
+ size_t n = ARR_LEN(destroyed_regs);
for (j = 0; j < n; ++j) {
if (destroyed_regs[j] == arg->reg) {
destroyed_regs[j] = destroyed_regs[n-1];
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
if (info->out_infos == NULL)
return 0;
- return ARR_LEN(info->out_infos);
+ return (unsigned)ARR_LEN(info->out_infos);
}
static inline const arch_irn_ops_t *get_irn_ops_simple(const ir_node *node)
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*/
void mature_immBlock(ir_node *block)
{
- int n_preds;
+ size_t n_preds;
ir_node *next;
ir_node *phi;
ir_graph *irg;
/*
- * Copyright (C) 1995-2010 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
static list_tuple *construct_extblock_lists(ir_graph *irg)
{
ir_node **blk_list = construct_block_lists(irg);
- int i;
+ size_t i, n;
ir_graph *rem = current_ir_graph;
list_tuple *lists = XMALLOC(list_tuple);
lists->extbb_list = NEW_ARR_F(ir_extblk *, 0);
inc_irg_block_visited(irg);
- for (i = ARR_LEN(blk_list) - 1; i >= 0; --i) {
+ for (i = 0, n = ARR_LEN(blk_list); i < n; ++i) {
ir_extblk *ext;
if (is_Block(blk_list[i])) {
* The outermost nodes: blocks and nodes not op_pin_state_pinned, Bad, Unknown. */
static void dump_block_graph(FILE *F, ir_graph *irg)
{
- int i;
+ size_t i, n;
ir_graph *rem = current_ir_graph;
ir_node **arr = (ir_node**)ird_get_irg_link(irg);
current_ir_graph = irg;
- for (i = ARR_LEN(arr) - 1; i >= 0; --i) {
- ir_node * node = arr[i];
+ for (i = 0, n = ARR_LEN(arr); i < n; ++i) {
+ ir_node *node = arr[i];
if (is_Block(node)) {
/* Dumps the block and all the nodes in the block, which are to
be found in Block->link. */
* The outermost nodes: blocks and nodes not op_pin_state_pinned, Bad, Unknown. */
static void dump_extblock_graph(FILE *F, ir_graph *irg)
{
- int i;
+ size_t i, arr_len;
ir_graph *rem = current_ir_graph;
ir_extblk **arr = (ir_extblk**)ird_get_irg_link(irg);
current_ir_graph = irg;
- for (i = ARR_LEN(arr) - 1; i >= 0; --i) {
+ for (i = 0, arr_len = ARR_LEN(arr); i < arr_len; ++i) {
ir_extblk *extbb = arr[i];
ir_node *leader = get_extbb_leader(extbb);
- int j;
+ size_t j, n_blks;
fprintf(F, "graph: { title: \"");
PRINT_EXTBBID(leader);
fprintf(F, "\" label: \"ExtBB %ld\" status:clustered color:lightgreen\n",
get_irn_node_nr(leader));
- for (j = ARR_LEN(extbb->blks) - 1; j >= 0; --j) {
- ir_node * node = extbb->blks[j];
+ for (j = 0, n_blks = ARR_LEN(extbb->blks); j < n_blks; ++j) {
+ ir_node *node = extbb->blks[j];
if (is_Block(node)) {
/* Dumps the block and all the nodes in the block, which are to
be found in Block->link. */
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
* Summed size of all users private data
*/
-static int edges_private_size = 0;
+static size_t edges_private_size = 0;
#define EDGE_SIZE (sizeof(ir_edge_t) + edges_private_size)
/**
* Each user has to remember his given offset and the size of his private data.
* To be called before FIRM is initialized.
*/
-int edges_register_private_data(size_t n)
+size_t edges_register_private_data(size_t n)
{
- int res = edges_private_size;
+ size_t res = edges_private_size;
assert(!edges_used && "you cannot register private edge data, if edges have been initialized");
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
* edges_get_private_data()
* to get a pointer to your data.
*/
-int edges_register_private_data(size_t n);
+size_t edges_register_private_data(size_t n);
/**
* Get a pointer to the private data you registered.
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*/
static ir_mode *find_mode(const ir_mode *m)
{
- int i;
- for (i = ARR_LEN(mode_list) - 1; i >= 0; --i) {
+ size_t i, n_modes;
+ for (i = 0, n_modes = ARR_LEN(mode_list); i < n_modes; ++i) {
ir_mode *n = mode_list[i];
if (modes_are_equal(n, m))
return n;
*/
static inline int _get_irn_arity(const ir_node *node)
{
- return ARR_LEN(node->in) - 1;
+ return (int)(ARR_LEN(node->in) - 1);
}
/**
}
static inline int _get_irn_deps(const ir_node *node) {
- return node->deps ? ARR_LEN(node->deps) : 0;
+ return node->deps ? (int)ARR_LEN(node->deps) : 0;
}
static inline ir_node *_get_irn_dep(const ir_node *node, int pos) {
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
/* Removes irg from the list or irgs, shrinks the list by one. */
void remove_irp_irg_from_list(ir_graph *irg)
{
- int i, l, found = 0;
+ size_t i, l;
assert(irg);
l = ARR_LEN(irp->graphs);
- for (i = 0; i < l; i++) {
+ for (i = 0; i < l; ++i) {
if (irp->graphs[i] == irg) {
- found = 1;
- for (; i < l - 1; i++) {
+ for (; i < l - 1; ++i) {
irp->graphs[i] = irp->graphs[i+1];
}
ARR_SETLEN(ir_graph*, irp->graphs, l - 1);
/* Remove type from the list of types in irp. */
void remove_irp_type(ir_type *typ)
{
- int i;
+ size_t i, l;
assert(typ);
- for (i = ARR_LEN(irp->types) - 1; i >= 0; i--) {
+ l = ARR_LEN(irp->types);
+ for (i = 0; i < l; ++i) {
if (irp->types[i] == typ) {
- for (; i < (ARR_LEN(irp->types)) - 1; i++) {
+ for (; i < l - 1; ++i) {
irp->types[i] = irp->types[i+1];
}
- ARR_SETLEN(ir_type *, irp->types, (ARR_LEN(irp->types)) - 1);
+ ARR_SETLEN(ir_type *, irp->types, l - 1);
break;
}
}
/* Adds opcode to the list of opcodes in irp. */
void add_irp_opcode(ir_op *opcode)
{
- int len;
+ size_t len;
size_t code;
assert(opcode != NULL);
assert(irp);
len = ARR_LEN(irp->opcodes);
code = opcode->code;
- if ((int) code >= len) {
+ if (code >= len) {
ARR_RESIZE(ir_op*, irp->opcodes, code+1);
memset(&irp->opcodes[len], 0, (code-len+1) * sizeof(irp->opcodes[0]));
}
static inline int _get_irp_n_irgs(void)
{
assert(irp && irp->graphs);
- return ARR_LEN(irp->graphs);
+ return (int)ARR_LEN(irp->graphs);
}
static inline ir_graph *_get_irp_irg(int pos)
static inline int _get_irp_n_types(void)
{
assert(irp && irp->types);
- return ARR_LEN(irp->types);
+ return (int)ARR_LEN(irp->types);
}
static inline ir_type *_get_irp_type(int pos)
static inline int _get_irp_n_modes(void)
{
assert(irp->modes);
- return ARR_LEN(irp->modes);
+ return (int)ARR_LEN(irp->modes);
}
static inline ir_mode *_get_irp_mode(int pos)
static inline int _get_irp_n_opcodes(void)
{
assert(irp && irp->opcodes);
- return ARR_LEN(irp->opcodes);
+ return (int)ARR_LEN(irp->opcodes);
}
static inline ir_op *_get_irp_opcode(int pos)
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
*/
static void do_copy_return_opt(ir_node *n, void *ctx)
{
- cr_pair *arr = (cr_pair*)ctx;
- int i;
-
if (is_Sel(n)) {
ir_entity *ent = get_Sel_entity(n);
+ cr_pair *arr = (cr_pair*)ctx;
+ size_t i, l;
- for (i = ARR_LEN(arr) - 1; i >= 0; --i) {
+ for (i = 0, l = ARR_LEN(arr); i < l; ++i) {
if (ent == arr[i].ent) {
exchange(n, arr[i].arg);
break;
*/
static void transform_irg(const lower_params_t *lp, ir_graph *irg)
{
- ir_graph * rem = current_ir_graph;
+ ir_graph *rem = current_ir_graph;
ir_entity *ent = get_irg_entity(irg);
ir_type *mtp, *lowered_mtp, *tp, *ft;
- int i, j, k, n_ress = 0, n_ret_com = 0, n_cr_opt;
+ int i, j, k, n_ress = 0, n_ret_com = 0;
+ size_t n_cr_opt;
ir_node **new_in, *ret, *endbl, *bl, *mem, *copy;
cr_pair *cr_opt;
wlk_env env;
set_irn_in(ret, j, new_in);
if (n_cr_opt > 0) {
+ size_t i, n;
+
irg_walk_graph(irg, NULL, do_copy_return_opt, cr_opt);
- for (i = ARR_LEN(cr_opt) - 1; i >= 0; --i) {
+ for (i = 0, n = ARR_LEN(cr_opt); i < n; ++i) {
free_entity(cr_opt[i].ent);
}
}
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
ir_entity *entity = get_irg_entity(irg);
ir_type *type = get_entity_type(entity);
bool changed = false;
- int i;
- int n;
+ size_t i;
+ size_t n;
config = nconfig;
lowered_nodes = NEW_ARR_F(ir_node*, 0);
irg_walk_graph(irg, firm_clear_link, NULL, NULL);
irg_walk_graph(irg, lower_mode_b_walker, NULL, &changed);
- for (i = 0; i < ARR_LEN(check_later); ++i) {
+ for (i = 0, n = ARR_LEN(check_later); i < n; ++i) {
ir_node *node = check_later[i];
irg_walk_core(node, lower_mode_b_walker, NULL, &changed);
}
- n = ARR_LEN(lowered_nodes);
- for (i = 0; i < n; ++i) {
+ for (i = 0, n = ARR_LEN(lowered_nodes); i < n; ++i) {
ir_node *node = lowered_nodes[i];
maybe_kill_node(node);
}
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
void lower_mux(ir_graph *irg, lower_mux_callback *cb_func)
{
- int i, n_muxes;
+ size_t i, n_muxes;
walk_env_t env;
/* Scan the graph for mux nodes to lower. */
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
ir_node *oob_cond;
ir_node *in[1];
ir_node *new_block;
- int n_default_preds;
+ size_t n_default_preds;
int i;
ir_node *proj;
/* adapt default block */
n_default_preds = ARR_LEN(default_preds);
if (n_default_preds > 1) {
- int i;
+ size_t i;
/* create new intermediate blocks so we don't have critical edges */
for (i = 0; i < n_default_preds; ++i) {
ir_node *initial_bl;
node_t *start;
ir_graph *rem = current_ir_graph;
- int len;
+ size_t len;
current_ir_graph = irg;
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
typedef struct loop_env {
ir_phase ph; /**< the phase object */
ir_node **stack; /**< the node stack */
- int tos; /**< tos index */
+ size_t tos; /**< tos index */
unsigned nextDFSnum; /**< the current DFS number */
unsigned POnum; /**< current post order number */
node_entry *e;
if (env->tos == ARR_LEN(env->stack)) {
- int nlen = ARR_LEN(env->stack) * 2;
+ size_t nlen = ARR_LEN(env->stack) * 2;
ARR_RESIZE(ir_node *, env->stack, nlen);
}
env->stack[env->tos++] = n;
/*
- * Copyright (C) 1995-2010 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
/* Removes alle Blocks with non marked predecessors from the condition chain. */
static void unmark_not_allowed_cc_blocks(void)
{
- int blocks = ARR_LEN(cc_blocks);
- int i;
+ size_t blocks = ARR_LEN(cc_blocks);
+ size_t i;
for(i = 0; i < blocks; ++i) {
ir_node *block = cc_blocks[i];
* TODO: invert head for unrolling? */
static void unmark_cc_blocks(void)
{
- int blocks = ARR_LEN(cc_blocks);
- int i;
+ size_t blocks = ARR_LEN(cc_blocks);
+ size_t i;
for(i = 0; i < blocks; ++i) {
ir_node *block = cc_blocks[i];
* Else, we will split identical blocks if we start which different roots.
*/
for (bl = env->all_blocks; bl != NULL; bl = bl->all_next) {
- int i, n = ARR_LEN(bl->roots);
+ size_t i, n = ARR_LEN(bl->roots);
#if 1
/* TODO: is this really needed? The roots are already in
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
typedef struct iv_env {
struct obstack obst; /**< an obstack for allocations */
ir_node **stack; /**< the node stack */
- int tos; /**< tos index */
+ size_t tos; /**< tos index */
unsigned nextDFSnum; /**< the current DFS number */
unsigned POnum; /**< current post order number */
set *quad_map; /**< a map from (op, iv, rc) to node */
node_entry *e;
if (env->tos == ARR_LEN(env->stack)) {
- int nlen = ARR_LEN(env->stack) * 2;
+ size_t nlen = ARR_LEN(env->stack) * 2;
ARR_RESIZE(ir_node *, env->stack, nlen);
}
env->stack[env->tos++] = n;
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
static void reorder_weights(q_set *hmap, float threshold)
{
entry_t **adr, *p, *entry;
- int i, len;
+ size_t i, len;
ir_entity *callee;
restart:
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
void remove_compound_ent_value(ir_entity *ent, ir_entity *value_ent)
{
- int i, n;
+ size_t i, n;
assert(is_compound_entity(ent));
n = ARR_LEN(ent->attr.cmpd_attr.val_paths);
/*
- * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
+ * Copyright (C) 1995-2011 University of Karlsruhe. All right reserved.
*
* This file is part of libFirm.
*
return (clss->type_op == type_class);
}
-static inline int _get_class_n_members (const ir_type *clss)
+static inline int _get_class_n_members(const ir_type *clss)
{
assert(clss && (clss->type_op == type_class));
- return (ARR_LEN (clss->attr.ca.members));
+ return (int)(ARR_LEN(clss->attr.ca.members));
}
static inline ir_entity *_get_class_member(const ir_type *clss, int pos)