From 059f8c6eaa207f0b5355401c7f50519dea80dc3c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Christian=20W=C3=BCrdig?= Date: Thu, 10 Aug 2006 20:03:53 +0000 Subject: [PATCH] added AddSP emitter --- ir/be/ia32/ia32_emitter.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/ir/be/ia32/ia32_emitter.c b/ir/be/ia32/ia32_emitter.c index 9ee652e11..b621521cc 100644 --- a/ir/be/ia32/ia32_emitter.c +++ b/ir/be/ia32/ia32_emitter.c @@ -1616,6 +1616,19 @@ static void emit_be_Call(const ir_node *irn, ia32_emit_env_t *emit_env) { IA32_DO_EMIT(irn); } +/** + * Emits code to increase stack pointer. + */ +static void emit_be_AddSP(const ir_node *irn, ia32_emit_env_t *emit_env) { + FILE *F = emit_env->out; + char cmd_buf[SNPRINTF_BUF_LEN], cmnt_buf[SNPRINTF_BUF_LEN]; + + lc_esnprintf(ia32_get_arg_env(), cmd_buf, SNPRINTF_BUF_LEN, "sub %1D, %2S", irn, irn); + snprintf(cmnt_buf, SNPRINTF_BUF_LEN, "/* reserve space on stack */"); + + IA32_DO_EMIT(irn); +} + /** * Emits code to increase stack pointer. */ @@ -1819,6 +1832,7 @@ static void ia32_register_emitters(void) { /* benode emitter */ BE_EMIT(Call); + BE_EMIT(AddSP); BE_EMIT(IncSP); BE_EMIT(SetSP); BE_EMIT(Copy); -- 2.20.1