From 00e4aa296b92b85bd8b0da490e32f3f20ade26a1 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Thu, 20 Apr 2006 16:42:24 +0000 Subject: [PATCH] fixed mappings for Load and Store nodes --- ir/be/arm/arm_map_regs.c | 42 +++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) diff --git a/ir/be/arm/arm_map_regs.c b/ir/be/arm/arm_map_regs.c index 2ebbe2387..a97b8b6ac 100644 --- a/ir/be/arm/arm_map_regs.c +++ b/ir/be/arm/arm_map_regs.c @@ -64,26 +64,42 @@ const arch_register_t *arm_get_firm_reg(const ir_node *irn, set *reg_set) { /** - * Translates the projnum into a "real" argument position for register - * requirements dependend on the predecessor. + * 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_arm_Load(pred) || is_arm_fpaLdf(pred)) { - if (nr == pn_Load_res) + 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; - assert(0 && "unsupported Proj(Load) number"); - } - else if (is_arm_Store(pred) || is_arm_fpaStf(pred)) { - return 0; - } - else if (is_arm_fpaDiv(pred) || is_arm_fpaRdv(pred)) { - if (nr == pn_Quot_res) - return 0; - else + 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)"); -- 2.20.1