* a next and prev pointers on blocks. The greedy algorithm sorts the edges by
* execution frequencies and tries to transform them to fallthroughs in this order
*/
-#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
#include "beblocksched.h"
#include "beirgmod.h"
#include "bemodule.h"
#include "be.h"
+#include "error.h"
-#include <libcore/lc_opts.h>
-#include <libcore/lc_opts_enum.h>
+#include "lc_opts.h"
+#include "lc_opts_enum.h"
#ifdef WITH_ILP
#include <lpp/lpp.h>
int pos; /**< number of cfg predecessor (target) */
double execfreq; /**< the frequency */
int highest_execfreq; /**< flag that indicates whether this edge is the edge with the highest
- execfreq pointing away from this block */
+ execfreq pointing away from this block */
} edge_t;
typedef struct _blocksched_env_t {
const ir_edge_t *edge;
double best_succ_execfreq;
- if (irn_visited(block))
+ if (irn_visited_else_mark(block))
return;
env->blockcount++;
- mark_irn_visited(block);
DBG((dbg, LEVEL_1, "Pick succ of %+F\n", block));
ir_node *startblock = get_irg_start_block(irg);
blocksched_entry_t *entry = get_irn_link(startblock);
- set_using_irn_visited(irg);
+ ir_reserve_resources(irg, IR_RESOURCE_IRN_VISITED);
inc_irg_visited(irg);
env->worklist = new_pdeq();
assert(pdeq_empty(env->worklist));
del_pdeq(env->worklist);
- clear_using_irn_visited(irg);
+ ir_free_resources(irg, IR_RESOURCE_IRN_VISITED);
return entry;
}
}
else {
int i;
- int *edgenums = alloca(sizeof(edgenums[0]) * arity);
snprintf(name, sizeof(name), "block_in_constr_%ld", get_irn_node_nr(block));
cst = lpp_add_cst_uniq(env->lpp, name, lpp_greater, arity - 1);
list.end = NULL;
list.n_blks = 0;
- set_using_irn_link(irg);
- set_using_irn_visited(irg);
+ ir_reserve_resources(irg, IR_RESOURCE_IRN_VISITED | IR_RESOURCE_IRN_LINK);
inc_irg_block_visited(irg);
create_block_list(get_irg_start_block(irg), &list);
blk_list[i] = b;
}
- clear_using_irn_link(irg);
- clear_using_irn_visited(irg);
+ ir_free_resources(irg, IR_RESOURCE_IRN_VISITED | IR_RESOURCE_IRN_LINK);
return blk_list;
}
#endif /* WITH_ILP */
}
- assert(0 && "unknown blocksched algo");
+ panic("unknown blocksched algo");
return NULL;
}