From 30241cf122eb4b1f42b7780187eefcf1e78f8898 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20W=C3=BCrdig?= Date: Fri, 2 Jun 2006 12:19:32 +0000 Subject: [PATCH] added missing emitter for CopyKeep --- ir/be/ia32/ia32_emitter.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/ir/be/ia32/ia32_emitter.c b/ir/be/ia32/ia32_emitter.c index 29cd8b051..f7cf9cd93 100644 --- a/ir/be/ia32/ia32_emitter.c +++ b/ir/be/ia32/ia32_emitter.c @@ -1646,15 +1646,15 @@ static void emit_be_SetSP(const ir_node *irn, ia32_emit_env_t *emit_env) { } /** - * Emits code for Copy. + * Emits code for Copy/CopyKeep. */ -static void emit_be_Copy(const ir_node *irn, ia32_emit_env_t *emit_env) { - FILE *F = emit_env->out; +static void Copy_emitter(const ir_node *irn, ir_node *op, ia32_emit_env_t *emit_env) { + FILE *F = emit_env->out; const arch_env_t *aenv = emit_env->arch_env; char cmd_buf[SNPRINTF_BUF_LEN], cmnt_buf[SNPRINTF_BUF_LEN]; - if (REGS_ARE_EQUAL(arch_get_irn_register(aenv, irn), arch_get_irn_register(aenv, be_get_Copy_op(irn))) || - be_is_unknown_reg(arch_get_irn_register(aenv, be_get_Copy_op(irn)))) + if (REGS_ARE_EQUAL(arch_get_irn_register(aenv, irn), arch_get_irn_register(aenv, op)) || + be_is_unknown_reg(arch_get_irn_register(aenv, op))) return; if (mode_is_float(get_irn_mode(irn))) @@ -1665,6 +1665,14 @@ static void emit_be_Copy(const ir_node *irn, ia32_emit_env_t *emit_env) { IA32_DO_EMIT(irn); } +static void emit_be_Copy(const ir_node *irn, ia32_emit_env_t *emit_env) { + Copy_emitter(irn, be_get_Copy_op(irn), emit_env); +} + +static void emit_be_CopyKeep(const ir_node *irn, ia32_emit_env_t *emit_env) { + Copy_emitter(irn, be_get_CopyKeep_op(irn), emit_env); +} + /** * Emits code for exchange. */ @@ -1777,6 +1785,7 @@ static void ia32_register_emitters(void) { BE_EMIT(IncSP); BE_EMIT(SetSP); BE_EMIT(Copy); + BE_EMIT(CopyKeep); BE_EMIT(Perm); BE_EMIT(Return); -- 2.20.1