- static ir_type *int_tp = NULL;
- arm_isa_t *isa = (arm_isa_t *) be_get_irg_arch_env(irg);
- arm_code_gen_t *cg;
-
- if (! int_tp) {
- /* create an integer type with machine size */
- int_tp = new_type_primitive(mode_Is);
- }
-
- cg = XMALLOC(arm_code_gen_t);
- cg->impl = &arm_code_gen_if;
- cg->irg = irg;
- cg->reg_set = new_set(arm_cmp_irn_reg_assoc, 1024);
- cg->isa = isa;
- cg->int_tp = int_tp;
- cg->dump = (be_get_irg_options(irg)->dump_flags & DUMP_BE) ? 1 : 0;
-
- FIRM_DBG_REGISTER(cg->mod, "firm.be.arm.cg");
-
- /* enter the current code generator */
- isa->cg = cg;
-
- return (arch_code_generator_t *)cg;