X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fmips%2Fmips_emitter.c;h=7bdc5317fadf8fdb15211344590c79ead761c0ab;hb=213c4b9fb82f0fb180920fafe45123b225f9b2d1;hp=1c2cb3acc43d6e1fa1a36ff380b41aceac0a4408;hpb=cc18a73b9046e11cdfd4065377d3cac59170aabb;p=libfirm diff --git a/ir/be/mips/mips_emitter.c b/ir/be/mips/mips_emitter.c index 1c2cb3acc..7bdc5317f 100644 --- a/ir/be/mips/mips_emitter.c +++ b/ir/be/mips/mips_emitter.c @@ -332,18 +332,6 @@ static char *get_unique_label(char *buf, size_t buflen, const char *prefix) return buf; } - -/** - * Returns the target label for a control flow node. - */ -static char *get_cfop_target(const ir_node *irn, char *buf) -{ - ir_node *bl = get_irn_link(irn); - - snprintf(buf, SNPRINTF_BUF_LEN, "BLOCK_%ld", get_irn_node_nr(bl)); - return buf; -} - /************************************************************************/ /* ABI Handling */ /************************************************************************/ @@ -353,11 +341,10 @@ static void mips_emit_IncSP(const ir_node *node, mips_emit_env_t *env) FILE *F = env->out; int offset = be_get_IncSP_offset(node); - if(offset == 0) + if(offset == 0) { + fprintf(F, "\t\t\t\t # omitted IncSP with 0\n"); return; - - if(be_get_IncSP_direction(node) != be_stack_dir_expand) - offset = -offset; + } fprintf(F, "\taddi $sp, $sp, %d\n", -offset); } @@ -388,7 +375,7 @@ static void mips_emit_Perm(const ir_node *node, mips_emit_env_t *env) { FILE *F = env->out; - assert(/*get_irn_n_outs(node) == 2 &&*/ get_irn_arity(node) == 2); + assert(get_irn_arity(node) == 2); lc_efprintf(mips_get_arg_env(), F, "\txor %1S, %1S, %2S\t\t\t# perm\n", node, node, node); mips_emit_nops(F, 3); @@ -400,18 +387,18 @@ static void mips_emit_Perm(const ir_node *node, mips_emit_env_t *env) static void mips_emit_Spill(const ir_node* node, mips_emit_env_t *env) { - FILE *F = env->out; - entity *ent = be_get_spill_entity(node); + FILE *F = env->out; + ir_entity *ent = be_get_frame_entity(node); - lc_efprintf(mips_get_arg_env(), F, "\tsw %1S, %d($fp)\n", node, get_entity_offset_bytes(ent)); + lc_efprintf(mips_get_arg_env(), F, "\tsw %1S, %d($fp)\n", node, get_entity_offset(ent)); } static void mips_emit_Reload(const ir_node* node, mips_emit_env_t *env) { - FILE *F = env->out; - entity *ent = be_get_spill_entity(node); + FILE *F = env->out; + ir_entity *ent = be_get_frame_entity(node); - lc_efprintf(mips_get_arg_env(), F, "\tlw %1D, %d($fp)\n", node, get_entity_offset_bytes(ent)); + lc_efprintf(mips_get_arg_env(), F, "\tlw %1D, %d($fp)\n", node, get_entity_offset(ent)); } /************************************************************************/ @@ -424,7 +411,7 @@ static void mips_emit_Call(ir_node *node, mips_emit_env_t *env) const arch_register_t *callee_reg; // call to imediate value (label) - entity *callee = be_Call_get_entity(node); + ir_entity *callee = be_Call_get_entity(node); if(callee != NULL) { fprintf(F, "\tjal %s\n", get_entity_name(callee)); return; @@ -642,6 +629,7 @@ void mips_register_emitters(void) op_be_RegParams->ops.generic = (op_func) mips_emit_nothing; op_be_Spill->ops.generic = (op_func) mips_emit_Spill; op_be_Reload->ops.generic = (op_func) mips_emit_Reload; + op_be_Perm->ops.generic = (op_func) mips_emit_Perm; op_Start->ops.generic = (op_func) mips_emit_nothing; op_Proj->ops.generic = (op_func) mips_emit_nothing; @@ -658,10 +646,10 @@ typedef void (*emit_func) (const ir_node *, mips_emit_env_t *); */ static void mips_emit_node(ir_node *irn, mips_emit_env_t* env) { - mips_emit_env_t *emit_env = env; - firm_dbg_module_t *mod = emit_env->mod; + mips_emit_env_t *emit_env = env; FILE *F = emit_env->out; ir_op *op = get_irn_op(irn); + DEBUG_ONLY(firm_dbg_module_t *mod = emit_env->mod;) DBG((mod, LEVEL_1, "emitting code for %+F\n", irn));