*/
static void build_affinity_chunks(co_mst_env_t *env)
{
- nodes_iter_t nodes_it;
- aff_edge_t *edges = NEW_ARR_F(aff_edge_t, 0);
- int i, len;
- size_t pn;
+ aff_edge_t *edges = NEW_ARR_F(aff_edge_t, 0);
/* at first we create the affinity edge objects */
- be_ifg_foreach_node(env->ifg, &nodes_it, n) {
+ be_ifg_foreach_node(env->ifg, n) {
int n_idx = get_irn_idx(n);
co_mst_irn_t *n1;
affinity_node_t *an;
}
/* now: sort edges and build the affinity chunks */
- len = ARR_LEN(edges);
+ size_t const len = ARR_LEN(edges);
qsort(edges, len, sizeof(edges[0]), cmp_aff_edge);
- for (i = 0; i < len; ++i) {
+ for (size_t i = 0; i < len; ++i) {
DBG((dbg, LEVEL_1, "edge (%u,%u) %f\n", edges[i].src->node_idx, edges[i].tgt->node_idx, edges[i].weight));
(void)aff_chunk_absorb(env, edges[i].src, edges[i].tgt);
pqueue_put(env->chunks, curr_chunk, curr_chunk->weight);
}
- for (pn = 0; pn < ARR_LEN(env->map.data); ++pn) {
+ for (size_t pn = 0; pn < ARR_LEN(env->map.data); ++pn) {
co_mst_irn_t *mirn = (co_mst_irn_t*)env->map.data[pn];
if (mirn == NULL)
continue;
{
bool redo = true;
const be_ifg_t *ifg = sr->co->cenv->ifg;
- nodes_iter_t iter;
while (redo) {
redo = false;
- be_ifg_foreach_node(ifg, &iter, irn) {
+ be_ifg_foreach_node(ifg, irn) {
const arch_register_req_t *req = arch_get_irn_register_req(irn);
coloring_suffix_t *cs;
be_ifg_t *ifg = ienv->co->cenv->ifg;
unsigned n_regs = arch_register_class_n_regs(ienv->co->cls);
const unsigned *allocatable_colors = lenv->allocatable_colors;
- nodes_iter_t iter;
char buf[32];
unsigned *const colors = rbitset_alloca(n_regs);
- be_ifg_foreach_node(ifg, &iter, irn) {
+ be_ifg_foreach_node(ifg, irn) {
const arch_register_req_t *req;
unsigned col;
int cst_idx;
ir_graph *irg = co->irg;
be_irg_t *birg = be_birg_from_irg(irg);
- nodes_iter_t it;
neighbours_iter_t nit;
int n, n_regs;
unsigned i;
*/
n = n_regs;
- be_ifg_foreach_node(ifg, &it, irn) {
+ be_ifg_foreach_node(ifg, irn) {
if (arch_irn_is_ignore(irn))
continue;
node_map[get_irn_idx(irn)] = n++;
fprintf(f, "%d %d\n", n, n_regs);
- be_ifg_foreach_node(ifg, &it, irn) {
+ be_ifg_foreach_node(ifg, irn) {
arch_register_req_t const *const req = arch_get_irn_register_req(irn);
if (arch_register_req_is(req, ignore))
continue;
static void dump_ifg_nodes(FILE *F, const be_ifg_t *ifg)
{
- nodes_iter_t ifg_iter;
- be_ifg_foreach_node(ifg, &ifg_iter, node) {
+ be_ifg_foreach_node(ifg, node) {
dump_node(F, node);
}
}
static void dump_ifg_edges(FILE *F, const be_ifg_t *ifg)
{
- nodes_iter_t ifg_iter;
-
- be_ifg_foreach_node(ifg, &ifg_iter, node) {
+ be_ifg_foreach_node(ifg, node) {
neighbours_iter_t neigh_iter;
be_ifg_foreach_neighbour(ifg, &neigh_iter, node, neighbour) {
static int int_component_stat(ir_graph *irg, be_ifg_t *ifg)
{
int n_comp = 0;
- nodes_iter_t nodes_it;
bitset_t *seen = bitset_malloc(get_irg_last_idx(irg));
- be_ifg_foreach_node(ifg, &nodes_it, n) {
+ be_ifg_foreach_node(ifg, n) {
if (bitset_is_set(seen, get_irn_idx(n)))
continue;
void be_ifg_stat(ir_graph *irg, be_ifg_t *ifg, be_ifg_stat_t *stat)
{
- nodes_iter_t nodes_it;
neighbours_iter_t neigh_it;
size_t n_nodes = 0;
size_t n_edges = 0;
- be_ifg_foreach_node(ifg, &nodes_it, n) {
+ be_ifg_foreach_node(ifg, n) {
++n_nodes;
be_ifg_foreach_neighbour(ifg, &neigh_it, n, m) {
++n_edges;
#define be_ifg_foreach_neighbour(ifg, iter, irn, pos) \
for (ir_node *pos = be_ifg_neighbours_begin(ifg, iter, irn); pos; pos = be_ifg_neighbours_next(iter))
-#define be_ifg_foreach_node(ifg, iter, pos) \
- for (ir_node *pos = be_ifg_nodes_begin(ifg, iter); pos; pos = be_ifg_nodes_next(iter))
+#define be_ifg_foreach_node(ifg, pos) \
+ for (bool pos##__once = true; pos##__once;) \
+ for (nodes_iter_t pos##__iter; pos##__once; pos##__once = false) \
+ for (ir_node *pos = be_ifg_nodes_begin(ifg, &pos##__iter); pos; pos = be_ifg_nodes_next(&pos##__iter))
#define be_ifg_foreach_clique(ifg, iter, buf, count) \
for(*(count) = be_ifg_cliques_begin(ifg, iter, buf); \