remove the unused/strange concept of a pseudo-irg
[libfirm] / ir / be / TEMPLATE / bearch_TEMPLATE.c
index b436c69..34d200a 100644 (file)
@@ -24,7 +24,6 @@
  */
 #include "config.h"
 
-#include "pseudo_irg.h"
 #include "irgwalk.h"
 #include "irprog.h"
 #include "irprintf.h"
@@ -66,13 +65,6 @@ static ir_entity *TEMPLATE_get_frame_entity(const ir_node *node)
        return NULL;
 }
 
-static void TEMPLATE_set_frame_entity(ir_node *node, ir_entity *ent)
-{
-       (void) node;
-       (void) ent;
-       /* TODO: set the ir_entity assigned to the frame */
-}
-
 /**
  * This function is called by the generic backend to correct offsets for
  * nodes accessing the stack.
@@ -96,7 +88,6 @@ static const arch_irn_ops_t TEMPLATE_irn_ops = {
        get_TEMPLATE_in_req,
        TEMPLATE_classify,
        TEMPLATE_get_frame_entity,
-       TEMPLATE_set_frame_entity,
        TEMPLATE_set_frame_offset,
        TEMPLATE_get_sp_bias,
        NULL,    /* get_inverse             */
@@ -115,7 +106,8 @@ static void TEMPLATE_prepare_graph(void *self)
 {
        TEMPLATE_code_gen_t *cg = self;
 
-       irg_walk_blkwise_graph(cg->irg, NULL, TEMPLATE_transform_node, cg);
+       /* transform nodes into assembler instructions */
+       TEMPLATE_transform_graph(cg);
 }
 
 
@@ -125,10 +117,7 @@ static void TEMPLATE_prepare_graph(void *self)
  */
 static void TEMPLATE_finish_irg(void *self)
 {
-       TEMPLATE_code_gen_t *cg = self;
-       ir_graph            *irg = cg->irg;
-
-       dump_ir_block_graph_sched(irg, "-TEMPLATE-finished");
+       (void) self;
 }
 
 
@@ -155,13 +144,13 @@ static void TEMPLATE_emit_and_done(void *self)
        TEMPLATE_code_gen_t *cg = self;
        ir_graph           *irg = cg->irg;
 
-       TEMPLATE_gen_routine(cg, irg);
+       TEMPLATE_emit_routine(irg);
 
        /* de-allocate code generator */
        free(cg);
 }
 
-static void *TEMPLATE_cg_init(be_irg_t *birg);
+static void *TEMPLATE_cg_init(ir_graph *irg);
 
 static const arch_code_generator_if_t TEMPLATE_code_gen_if = {
        TEMPLATE_cg_init,
@@ -178,16 +167,15 @@ static const arch_code_generator_if_t TEMPLATE_code_gen_if = {
 /**
  * Initializes the code generator.
  */
-static void *TEMPLATE_cg_init(be_irg_t *birg)
+static void *TEMPLATE_cg_init(ir_graph *irg)
 {
-       const arch_env_t    *arch_env = be_get_birg_arch_env(birg);
+       const arch_env_t    *arch_env = be_get_irg_arch_env(irg);
        TEMPLATE_isa_t      *isa      = (TEMPLATE_isa_t *) arch_env;
        TEMPLATE_code_gen_t *cg       = XMALLOC(TEMPLATE_code_gen_t);
 
-       cg->impl     = &TEMPLATE_code_gen_if;
-       cg->irg      = be_get_birg_irg(birg);
-       cg->isa      = isa;
-       cg->birg     = birg;
+       cg->impl = &TEMPLATE_code_gen_if;
+       cg->irg  = irg;
+       cg->isa  = isa;
 
        return (arch_code_generator_t *)cg;
 }
@@ -206,6 +194,7 @@ static TEMPLATE_isa_t TEMPLATE_isa_template = {
                NULL,                        /* main environment */
                7,                           /* costs for a spill instruction */
                5,                           /* costs for a reload instruction */
+               false,                       /* no custom abi handling */
        },
 };
 
@@ -217,7 +206,7 @@ static arch_env_t *TEMPLATE_init(FILE *outfile)
        static int run_once = 0;
        TEMPLATE_isa_t *isa;
 
-       if(run_once)
+       if (run_once)
                return NULL;
        run_once = 1;
 
@@ -268,7 +257,7 @@ static const arch_register_class_t *TEMPLATE_get_reg_class(unsigned i)
  * @param mode The mode in question.
  * @return A register class which can hold values of the given mode.
  */
-const arch_register_class_t *TEMPLATE_get_reg_class_for_mode(const ir_mode *mode)
+static const arch_register_class_t *TEMPLATE_get_reg_class_for_mode(const ir_mode *mode)
 {
        if (mode_is_float(mode))
                return &TEMPLATE_reg_classes[CLASS_TEMPLATE_fp];
@@ -305,7 +294,7 @@ static ir_type *TEMPLATE_get_between_type(void *self)
        static ir_entity *old_bp_ent = NULL;
        (void) self;
 
-       if(!between_type) {
+       if (!between_type) {
                ir_entity *ret_addr_ent;
                ir_type *ret_addr_type = new_type_primitive(mode_P);
                ir_type *old_bp_type   = new_type_primitive(mode_P);
@@ -333,7 +322,7 @@ static const arch_register_t *TEMPLATE_abi_prologue(void *self, ir_node **mem,
        (void) mem;
        (void) stack_bias;
 
-       if(env->flags.try_omit_fp)
+       if (env->flags.try_omit_fp)
                return env->arch_env->sp;
        return env->arch_env->bp;
 }
@@ -362,8 +351,8 @@ static const be_abi_callbacks_t TEMPLATE_abi_callbacks = {
  * @param method_type The type of the method (procedure) in question.
  * @param abi         The abi object to be modified
  */
-void TEMPLATE_get_call_abi(const void *self, ir_type *method_type,
-                           be_abi_call_t *abi)
+static void TEMPLATE_get_call_abi(const void *self, ir_type *method_type,
+                                  be_abi_call_t *abi)
 {
        ir_type  *tp;
        ir_mode  *mode;
@@ -384,12 +373,12 @@ void TEMPLATE_get_call_abi(const void *self, ir_type *method_type,
        for (i = 0; i < n; i++) {
                /* TODO: implement register parameter: */
                /* reg = get reg for param i;          */
-               /* be_abi_call_param_reg(abi, i, reg); */
+               /* be_abi_call_param_reg(abi, i, reg, ABI_CONTEXT_BOTH); */
 
                /* default: all parameters on stack */
                tp   = get_method_param_type(method_type, i);
                mode = get_type_mode(tp);
-               be_abi_call_param_stack(abi, i, mode, 4, 0, 0);
+               be_abi_call_param_stack(abi, i, mode, 4, 0, 0, ABI_CONTEXT_BOTH);
        }
 
        /* TODO: set correct return register */
@@ -399,15 +388,15 @@ void TEMPLATE_get_call_abi(const void *self, ir_type *method_type,
                mode = get_type_mode(tp);
 
                be_abi_call_res_reg(abi, 0,
-                       mode_is_float(mode) ? &TEMPLATE_fp_regs[REG_F0] : &TEMPLATE_gp_regs[REG_R0]);
+                       mode_is_float(mode) ? &TEMPLATE_fp_regs[REG_F0] : &TEMPLATE_gp_regs[REG_R0], ABI_CONTEXT_BOTH);
        }
 }
 
-int TEMPLATE_to_appear_in_schedule(void *block_env, const ir_node *irn)
+static int TEMPLATE_to_appear_in_schedule(void *block_env, const ir_node *irn)
 {
        (void) block_env;
 
-       if(!is_TEMPLATE_irn(irn))
+       if (!is_TEMPLATE_irn(irn))
                return -1;
 
        return 1;
@@ -458,7 +447,8 @@ static int TEMPLATE_get_reg_class_alignment(const arch_register_class_t *cls)
 /**
  * Returns the libFirm configuration parameter for this backend.
  */
-static const backend_params *TEMPLATE_get_backend_params(void) {
+static const backend_params *TEMPLATE_get_backend_params(void)
+{
        static backend_params p = {
                0,     /* no dword lowering */
                0,     /* no inline assembly */
@@ -480,7 +470,6 @@ static const be_execution_unit_t ***TEMPLATE_get_allowed_execution_units(
 {
        (void) irn;
        /* TODO */
-       assert(0);
        return NULL;
 }
 
@@ -488,7 +477,6 @@ static const be_machine_t *TEMPLATE_get_machine(const void *self)
 {
        (void) self;
        /* TODO */
-       assert(0);
        return NULL;
 }
 
@@ -533,10 +521,10 @@ const arch_isa_if_t TEMPLATE_isa_if = {
        TEMPLATE_is_valid_clobber
 };
 
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_arch_TEMPLATE);
 void be_init_arch_TEMPLATE(void)
 {
        be_register_isa_if("TEMPLATE", &TEMPLATE_isa_if);
        FIRM_DBG_REGISTER(dbg, "firm.be.TEMPLATE.cg");
        TEMPLATE_init_transform();
 }
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_arch_TEMPLATE);