* @brief Primitive list scheduling with different node selectors.
* @author Sebastian Hack
* @date 20.10.2004
- * @version $Id$
*/
#include "config.h"
#include "obst.h"
#include "list.h"
-#include "iterator.h"
#include "iredges_t.h"
#include "irgwalk.h"
#include "belistsched.h"
#include "bearch.h"
#include "bestat.h"
-#include "beirg.h"
#include "lc_opts.h"
#include "lc_opts_enum.h"
-DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL);
+DEBUG_ONLY(static firm_dbg_module_t *dbg = NULL;)
/**
* Scheduling environment for the whole graph.
static void node_ready(block_sched_env_t *env, ir_node *pred, ir_node *irn)
{
if (is_Proj(irn)
- || (arch_irn_get_flags(irn) & arch_irn_flags_not_scheduled)) {
+ || (arch_get_irn_flags(irn) & arch_irn_flags_not_scheduled)) {
selected(env, irn);
DB((dbg, LEVEL_3, "\tmaking immediately available: %+F\n", irn));
} else if (be_is_Keep(irn) || be_is_CopyKeep(irn)) {
static void selected(block_sched_env_t *env, ir_node *node)
{
- const ir_edge_t *edge;
-
/* notify the selector about the finally selected node. */
if (env->selector->node_selected)
env->selector->node_selected(env->selector_block_env, node);
*/
static void add_to_sched(block_sched_env_t *env, ir_node *irn)
{
- assert(! (arch_irn_get_flags(irn) & arch_irn_flags_not_scheduled));
+ assert(! (arch_get_irn_flags(irn) & arch_irn_flags_not_scheduled));
sched_add_before(env->block, irn);
const list_sched_selector_t *selector = env->selector;
block_sched_env_t be;
- const ir_edge_t *edge;
ir_nodeset_t *cands = &be.cands;
/* Initialize the block's list head that will hold the schedule. */
add_to_sched(&be, irn);
}
+ ir_nodeset_destroy(cands);
+
if (selector->finish_block)
selector->finish_block(be.selector_block_env);
}
free(env.scheduled);
}
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_listsched);
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_listsched)
void be_init_listsched(void)
{
FIRM_DBG_REGISTER(dbg, "firm.be.sched");