X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Farm%2Farm_map_regs.c;h=7cde554eb4182e46c156a21c6974f9fcfb7406b1;hb=3403745d35e2d624829275a010092414008fe5b7;hp=be81948e9b494aaded146282fc510909c76380a4;hpb=b68c0cfd732bac85a0ac5b3161e93e835fcdb124;p=libfirm diff --git a/ir/be/arm/arm_map_regs.c b/ir/be/arm/arm_map_regs.c index be81948e9..7cde554eb 100644 --- a/ir/be/arm/arm_map_regs.c +++ b/ir/be/arm/arm_map_regs.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -23,9 +23,7 @@ * @author Oliver Richter, Tobias Gneist * @version $Id$ */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif #include @@ -42,7 +40,8 @@ static const arch_register_t *gpreg_param_reg_std[] = { &arm_gp_regs[REG_R3], }; -const arch_register_t *arm_get_RegParam_reg(int n) { +const arch_register_t *arm_get_RegParam_reg(int n) +{ assert(n < 4 && n >=0 && "register param > 3 angefordert"); return gpreg_param_reg_std[n]; } @@ -54,14 +53,17 @@ struct arm_irn_reg_assoc { const arch_register_t *reg; }; -int arm_cmp_irn_reg_assoc(const void *a, const void *b, size_t len) { +int arm_cmp_irn_reg_assoc(const void *a, const void *b, size_t size) +{ const struct arm_irn_reg_assoc *x = a; const struct arm_irn_reg_assoc *y = b; + (void) size; return x->irn != y->irn; } -static struct arm_irn_reg_assoc *get_irn_reg_assoc(const ir_node *irn, set *reg_set) { +static struct arm_irn_reg_assoc *get_irn_reg_assoc(const ir_node *irn, set *reg_set) +{ struct arm_irn_reg_assoc templ; unsigned int hash; @@ -72,57 +74,14 @@ static struct arm_irn_reg_assoc *get_irn_reg_assoc(const ir_node *irn, set *reg_ return set_insert(reg_set, &templ, sizeof(templ), hash); } -void arm_set_firm_reg(ir_node *irn, const arch_register_t *reg, set *reg_set) { +void arm_set_firm_reg(ir_node *irn, const arch_register_t *reg, set *reg_set) +{ struct arm_irn_reg_assoc *assoc = get_irn_reg_assoc(irn, reg_set); assoc->reg = reg; } -const arch_register_t *arm_get_firm_reg(const ir_node *irn, set *reg_set) { - struct arm_irn_reg_assoc *assoc = get_irn_reg_assoc(irn, reg_set); +const arch_register_t *arm_get_firm_reg(const ir_node *irn, set *reg_set) +{ + const struct arm_irn_reg_assoc *assoc = get_irn_reg_assoc(irn, reg_set); return assoc->reg; } - - - -/** - * Translates the proj number into a "real" argument position for register - * requirements depended on the predecessor. - */ -long arm_translate_proj_pos(const ir_node *proj) { - ir_node *pred = get_Proj_pred(proj); - long nr = get_Proj_proj(proj); - - if (is_irn_machine_op(pred)) { - switch (get_arm_irn_opcode(pred)) { - - case iro_arm_Loadb: - case iro_arm_Loadbs: - case iro_arm_Loadh: - case iro_arm_Loadhs: - case iro_arm_Load: - case iro_arm_fpaLdf: - if (nr == pn_Load_res) - return 0; - assert(0 && "unsupported Proj(Load) number"); - break; - case iro_arm_Storeb: - case iro_arm_Storebs: - case iro_arm_Storeh: - case iro_arm_Storehs: - case iro_arm_Store: - case iro_arm_fpaStf: - return 0; - case iro_arm_fpaDiv: - case iro_arm_fpaRdv: - if (nr == pn_Quot_res) - return 0; - assert(0 && "there should be no more Projs for a fDiv"); - break; - default: - break; - } - } - -// assert(0 && "unsupported Proj(X)"); - return nr; -}