- irg_block_walk_graph(irg, block_walker, NULL, &wd);
-
- size = set_count(freqs);
- matrix = xmalloc(size*size*sizeof(*matrix));
- memset(matrix, 0, size*size*sizeof(*matrix));
- rhs = xmalloc(size*sizeof(*rhs));
- memset(rhs, 0, size*sizeof(*rhs));
-
- set_foreach(freqs, freq) {
- ir_node *bb = (ir_node *)freq->irn;
- size_t idx = (int)get_irn_link(bb);
-
- matrix[idx * (size + 1)] = -1.0;
+ construct_cf_backedges(irg);
+ /* TODO: edges are corrupt for EDGE_KIND_BLOCK after the local optimize
+ graph phase merges blocks in the x86 backend */
+ edges_deactivate(irg);
+ edges_activate(irg);
+ /* edges_assure(irg); */
+
+ size = dfs_get_n_nodes(dfs);
+ mat = gs_new_matrix(size, size);
+ x = xmalloc(size*sizeof(*x));
+
+ for (idx = dfs_get_n_nodes(dfs) - 1; idx >= 0; --idx) {
+ ir_node *bb = (ir_node *) dfs_get_post_num_node(dfs, size - idx - 1);
+ freq_t *freq;
+ int i;