* @param type type of iterator variable
* @param entry the iterator
*/
-#define foreach_pset(pset, type, entry) for (entry = (type)pset_first(pset); entry; entry = (type)pset_next(pset))
+#define foreach_pset(pset, type, entry) for (type entry = (type)pset_first(pset); entry; entry = (type)pset_next(pset))
/**
* Inserts all elements of the pointer set src into
void pset_insert_pset_ptr(pset *target, pset *src)
{
- void *elt;
foreach_pset(src, void*, elt) {
pset_insert_ptr(target, elt);
}
/* Change the sets to arrays. */
for (i = 0; i < n_irgs; ++i) {
size_t j, count;
- cg_callee_entry *callee;
- ir_graph *c, *irg = get_irp_irg(i);
+ ir_graph *irg = get_irp_irg(i);
pset *callee_set, *caller_set;
callee_set = (pset *)irg->callees;
/* no overwriting methods found */
arr = NULL;
} else {
- ir_entity * ent;
arr = NEW_ARR_F(ir_entity *, size);
foreach_pset(set, ir_entity*, ent) {
arr[--size] = ent;
pset *free_set = pset_new_ptr_default();
size_t i, n, j, m;
ir_entity **arr;
- ir_entity *ent;
ir_graph *irg;
ir_type *tp;
size_t length;
for (i = 0, n = get_irp_n_irgs(); i < n; ++i) {
ir_linkage linkage;
irg = get_irp_irg(i);
- ent = get_irg_entity(irg);
+ ir_entity *const ent = get_irg_entity(irg);
linkage = get_entity_linkage(ent);
if ((linkage & IR_LINKAGE_HIDDEN_USER) || entity_is_externally_visible(ent)) {
/* insert all methods that are used in global variables initializers */
tp = get_glob_type();
for (j = 0, m = get_class_n_members(tp); j < m; ++j) {
- ent = get_class_member(tp, j);
+ ir_entity *const ent = get_class_member(tp, j);
add_method_address(ent, free_set);
}
tp = get_tls_type();
for (j = 0, m = get_compound_n_members(tp); j < m; ++j) {
- ent = get_compound_member(tp, j);
+ ir_entity *const ent = get_compound_member(tp, j);
add_method_address(ent, free_set);
}
(void) env;
if (is_Call(call)) {
pset *methods = pset_new_ptr_default();
- ir_entity *ent;
ir_entity **arr;
size_t i;
/** Frees intermediate data structures. */
static void sel_methods_dispose(void)
{
- ir_entity * ent;
assert(entities);
foreach_pset(entities, ir_entity*, ent) {
ir_entity **arr = (ir_entity**) get_entity_link(ent);
/* search for a candidate to extend the clique */
for (i=0; i<n_nodes; ++i) {
ir_node *cand = nodes[i];
- ir_node *member;
bool is_cand;
/* if its already in the clique try the next */
/* now the clique is maximal. Finally add the constraint */
{
- ir_node *member;
- int var_idx;
- int cst_idx;
- char buf[32];
+ int var_idx;
+ int cst_idx;
+ char buf[32];
cst_idx = lpp_add_cst(ienv->lp, NULL, lpp_greater_equal, pset_count(clique)-1);
/* before shrinking the set, return the current maximal clique */
if (output_on_shrink) {
int count = 0;
- ir_node *irn;
/* fill the output buffer */
foreach_pset(it->living, ir_node*, irn) {
void firm_pset_dump(pset *set)
{
- void *obj;
-
foreach_pset(set, void*, obj) {
ir_fprintf(stderr, "%+F\n", obj);
}
{
pset *loopnodes = pset_new_ptr_default();
pset *extnodes = pset_new_ptr_default();
- ir_node *n, *b;
char name[50];
snprintf(name, sizeof(name), "loop_%ld", get_loop_loop_nr(l));
}
foreach_pset(loopnodes, ir_node*, n) {
if (!is_Block(n)) {
- b = get_nodes_block(n);
+ ir_node *const b = get_nodes_block(n);
set_irn_link(n, get_irn_link(b));
set_irn_link(b, n);
}
}
foreach_pset(extnodes, ir_node*, n) {
if (!is_Block(n)) {
- b = get_nodes_block(n);
+ ir_node *const b = get_nodes_block(n);
set_irn_link(n, get_irn_link(b));
set_irn_link(b, n);
}
dump_ir_data_edges(F, b);
/* dump the nodes that go into the block */
- for (n = (ir_node*)get_irn_link(b); n; n = (ir_node*)get_irn_link(n)) {
+ for (ir_node *n = (ir_node*)get_irn_link(b); n; n = (ir_node*)get_irn_link(n)) {
if (pset_find_ptr(extnodes, n))
overrule_nodecolor = ird_color_block_inout;
dump_node(F, n);
fprintf(F, "\" status:clustered color:lightblue\n");
/* dump the nodes that go into the block */
- for (n = (ir_node*)get_irn_link(b); n; n = (ir_node*)get_irn_link(n)) {
+ for (ir_node *n = (ir_node*)get_irn_link(b); n; n = (ir_node*)get_irn_link(n)) {
if (!pset_find_ptr(loopnodes, n))
overrule_nodecolor = ird_color_block_inout;
dump_node(F, n);
void visit_all_identities(ir_graph *irg, irg_walk_func visit, void *env)
{
- ir_node *node;
ir_graph *rem = current_ir_graph;
current_ir_graph = irg;
*/
void proc_cloning(float threshold)
{
- entry_t *entry = NULL, *p;
+ entry_t *p;
size_t i, n;
q_set hmap;
#ifdef DEBUG_libfirm
/* Print some information about the list. */
DB((dbg, LEVEL_2, "-----------------\n"));
- for (entry = hmap.heavy_uses; entry; entry = entry->next) {
+ for (entry_t *entry = hmap.heavy_uses; entry; entry = entry->next) {
DB((dbg, LEVEL_2, "\nweight: is %f\n", entry->weight));
DB((dbg, LEVEL_2, "Call for Method %E\n", entry->q.ent));
DB((dbg, LEVEL_2, "Position %zu\n", entry->q.pos));
DB((dbg, LEVEL_2, "Value %T\n", entry->q.tv));
}
#endif
- entry = hmap.heavy_uses;
+ entry_t *const entry = hmap.heavy_uses;
if (entry) {
quadruple_t *qp = &entry->q;
*/
int stat_get_count_distrib_tbl(distrib_tbl_t *tbl)
{
- distrib_entry_t *entry;
counter_t cnt = ZERO_CNT;
foreach_pset(tbl->hash_map, distrib_entry_t*, entry)
*/
double stat_calc_mean_distrib_tbl(distrib_tbl_t *tbl)
{
- distrib_entry_t *entry;
size_t count;
double sum;
*/
double stat_calc_avg_distrib_tbl(distrib_tbl_t *tbl)
{
- distrib_entry_t *entry;
- size_t count = 0;
- double sum = 0.0;
+ size_t count = 0;
+ double sum = 0.0;
if (tbl->int_dist) {
if (pset_count(tbl->hash_map) <= 0)
*/
void stat_iterate_distrib_tbl(const distrib_tbl_t *tbl, eval_distrib_entry_fun eval, void *env)
{
- distrib_entry_t *entry;
-
foreach_pset(tbl->hash_map, distrib_entry_t*, entry)
eval(entry, env);
}
*/
static void update_graph_stat(graph_entry_t *global, graph_entry_t *graph)
{
- node_entry_t *entry;
int i;
/* clear first the alive counter in the graph */
for (dumper = status->dumper; dumper; dumper = dumper->next) {
if (dumper->func_map) {
- dump_graph_FUNC func;
-
foreach_pset(dumper->func_map, dump_graph_FUNC, func)
func(dumper, entry);
} /* if */
STAT_ENTER;
{
- graph_entry_t *entry;
graph_entry_t *global = graph_get_entry(NULL, status->irg_hash);
/*
/* some calculations are dependent, we pushed them on the wait_q */
while (! pdeq_empty(status->wait_q)) {
- entry = (graph_entry_t*)pdeq_getr(status->wait_q);
+ graph_entry_t *const entry = (graph_entry_t*)pdeq_getr(status->wait_q);
update_graph_stat_2(global, entry);
} /* while */
stat_finish_pattern_history(fname);
/* clear the global counters here */
- {
- node_entry_t *entry;
-
- foreach_pset(global->opcode_hash, node_entry_t*, entry) {
- opcode_clear_entry(entry);
- } /* for */
- /* clear all global counter */
- graph_clear_entry(global, /*all=*/1);
- }
+ foreach_pset(global->opcode_hash, node_entry_t*, entry) {
+ opcode_clear_entry(entry);
+ } /* for */
+ /* clear all global counter */
+ graph_clear_entry(global, /*all=*/1);
}
STAT_LEAVE;
} /* stat_dump_snapshot */
static void store_pattern(const char *fname)
{
FILE *f;
- pattern_entry_t *entry;
size_t count = pset_count(status->pattern_hash);
if (count <= 0)
*/
static void pattern_output(const char *fname)
{
- pattern_entry_t *entry;
pattern_entry_t **pattern_arr;
pattern_dumper_t *dump;
size_t i, count = pset_count(status->pattern_hash);
qsort(pattern_arr, count, sizeof(*pattern_arr), pattern_count_cmp);
for (i = 0; i < count; ++i) {
- entry = pattern_arr[i];
+ pattern_entry_t *const entry = pattern_arr[i];
if (cnt_to_uint(&entry->count) < status->bound)
continue;
*/
static void simple_dump_opcode_hash(dumper_t *dmp, pset *set)
{
- node_entry_t *entry;
counter_t f_alive;
counter_t f_new_node;
counter_t f_Id;
static void simple_dump_opt_hash(dumper_t *dmp, pset *set, int index)
{
if (pset_count(set) > 0) {
- opt_entry_t *entry;
const char *name = get_opt_name(index);
fprintf(dmp->f, "\n%s:\n", name);
*/
static void simple_dump_be_block_reg_pressure(dumper_t *dmp, graph_entry_t *entry)
{
- be_block_entry_t *b_entry = (be_block_entry_t*)pset_first(entry->be_block_hash);
- reg_pressure_entry_t *rp_entry;
-
/* return if no be statistic information available */
- if (! b_entry)
+ be_block_entry_t *const b_first = (be_block_entry_t*)pset_first(entry->be_block_hash);
+ if (!b_first)
return;
fprintf(dmp->f, "\nREG PRESSURE:\n");
fprintf(dmp->f, "%12s", "Block Nr");
/* print table head (register class names) */
- foreach_pset(b_entry->reg_pressure, reg_pressure_entry_t*, rp_entry)
+ foreach_pset(b_first->reg_pressure, reg_pressure_entry_t*, rp_entry)
fprintf(dmp->f, "%15s", rp_entry->class_name);
fprintf(dmp->f, "\n");
static void simple_dump_be_block_sched_ready(dumper_t *dmp, graph_entry_t *entry)
{
if (pset_count(entry->be_block_hash) > 0) {
- be_block_entry_t *b_entry;
- int i;
+ int i;
fprintf(dmp->f, "\nSCHEDULING: NUMBER OF READY NODES\n");
fprintf(dmp->f, "%12s %12s %12s %12s %12s %12s %12s\n",
*/
static void simple_dump_be_block_permstat_class(dumper_t *dmp, perm_class_entry_t *entry)
{
- perm_stat_entry_t *ps_ent;
- distrib_tbl_t *sum_chains = stat_new_int_distrib_tbl();
- distrib_tbl_t *sum_cycles = stat_new_int_distrib_tbl();
- char buf[16];
- int i;
+ distrib_tbl_t *sum_chains = stat_new_int_distrib_tbl();
+ distrib_tbl_t *sum_cycles = stat_new_int_distrib_tbl();
+ char buf[16];
+ int i;
fprintf(dmp->f, "%12s %12s %12s %12s %12s %12s\n",
"size",
static void simple_dump_be_block_permstat(dumper_t *dmp, graph_entry_t *entry)
{
if (pset_count(entry->be_block_hash) > 0) {
- be_block_entry_t *b_entry;
-
fprintf(dmp->f, "\nPERMUTATION STATISTICS BEGIN:\n");
foreach_pset(entry->be_block_hash, be_block_entry_t*, b_entry) {
- perm_class_entry_t *pc_ent;
-
fprintf(dmp->f, "BLOCK %ld:\n", b_entry->block_nr);
if (b_entry->perm_class_stat) {
static void simple_dump_graph(dumper_t *dmp, graph_entry_t *entry)
{
int dump_opts = 1;
- block_entry_t *b_entry;
if (! dmp->f)
return;
*/
static void csv_count_nodes(dumper_t *dmp, graph_entry_t *graph, counter_t cnt[])
{
- node_entry_t *entry;
int i;
for (i = 0; i < 4; ++i)