}
-/**
- * These are some hooks which must be filled but are probably not needed.
- */
-static void TEMPLATE_before_sched(void *self) {
- (void) self;
- /* Some stuff you need to do after scheduling but before register allocation */
-}
-
static void TEMPLATE_before_ra(void *self) {
(void) self;
/* Some stuff you need to do after scheduling but before register allocation */
NULL, /* before abi introduce hook */
TEMPLATE_prepare_graph,
NULL, /* spill hook */
- TEMPLATE_before_sched, /* before scheduling hook */
TEMPLATE_before_ra, /* before register allocation hook */
TEMPLATE_after_ra, /* after register allocation hook */
TEMPLATE_finish_irg,
}
-/**
- * These are some hooks which must be filled but are probably not needed.
- */
-static void arm_before_sched(void *self)
-{
- (void) self;
- /* Some stuff you need to do after scheduling but before register allocation */
-}
-
static void arm_before_ra(void *self)
{
(void) self;
arm_before_abi, /* before abi introduce */
arm_prepare_graph,
NULL, /* spill */
- arm_before_sched, /* before scheduling hook */
arm_before_ra, /* before register allocation hook */
arm_after_ra,
arm_finish_irg,
*/
void (*spill)(void *self, be_irg_t *birg);
- /**
- * Called before scheduling.
- */
- void (*before_sched)(void *self);
-
/**
* Called before register allocation.
*/
#define arch_code_generator_before_abi(cg) _arch_cg_call(cg, before_abi)
#define arch_code_generator_prepare_graph(cg) _arch_cg_call(cg, prepare_graph)
-#define arch_code_generator_before_sched(cg) _arch_cg_call(cg, before_sched)
#define arch_code_generator_before_ra(cg) _arch_cg_call(cg, before_ra)
#define arch_code_generator_after_ra(cg) _arch_cg_call(cg, after_ra)
#define arch_code_generator_finish(cg) _arch_cg_call(cg, finish)
/* disabled for now, fails for EmptyFor.c and XXEndless.c */
/* be_live_chk_compare(birg); */
- /* let backend prepare scheduling */
- BE_TIMER_PUSH(t_codegen);
- arch_code_generator_before_sched(birg->cg);
- BE_TIMER_POP(t_codegen);
-
/* schedule the irg */
BE_TIMER_PUSH(t_sched);
switch (be_options.scheduler) {
be_dump(cg->irg, "-place", dump_ir_block_graph_sched);
}
-/**
- * Dummy functions for hooks we don't need but which must be filled.
- */
-static void ia32_before_sched(void *self) {
- (void) self;
-}
-
ir_node *turn_back_am(ir_node *node)
{
ir_graph *irg = current_ir_graph;
ia32_before_abi, /* before abi introduce hook */
ia32_prepare_graph,
NULL, /* spill */
- ia32_before_sched, /* before scheduling hook */
ia32_before_ra, /* before register allocation hook */
ia32_after_ra, /* after register allocation hook */
ia32_finish, /* called before codegen */
}
-/**
- * These are some hooks which must be filled but are probably not needed.
- */
-static void mips_before_sched(void *self)
-{
- (void) self;
-}
-
static void mips_before_ra(void *self)
{
(void) self;
NULL, /* before abi introduce */
mips_prepare_graph,
NULL, /* spill */
- mips_before_sched, /* before scheduling hook */
mips_before_ra, /* before register allocation hook */
mips_after_ra,
mips_finish_irg,
}
-/**
- * These are some hooks which must be filled but are probably not needed.
- */
-static void ppc32_before_sched(void *self) {
- (void) self;
- /* Some stuff you need to do after scheduling but before register allocation */
-}
-
/**
* Called before the register allocator.
* Calculate a block schedule here. We need it for the x87
ppc32_before_abi,
ppc32_prepare_graph,
NULL, /* spill */
- ppc32_before_sched, /* before scheduling hook */
ppc32_before_ra, /* before register allocation hook */
ppc32_after_ra,
ppc32_finish_irg,