From 9f707bb5a85365ebd4b5b5fbc8d4312b64e37475 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Sat, 2 Jun 2007 00:50:50 +0000 Subject: [PATCH] initial support for exception handling [r14261] --- ir/be/ia32/ia32_emitter.c | 10 ++++++++++ ir/be/ia32/ia32_emitter.h | 1 + 2 files changed, 11 insertions(+) diff --git a/ir/be/ia32/ia32_emitter.c b/ir/be/ia32/ia32_emitter.c index cfbe00eb5..c9d1f743e 100644 --- a/ir/be/ia32/ia32_emitter.c +++ b/ir/be/ia32/ia32_emitter.c @@ -2143,6 +2143,16 @@ void ia32_gen_labels(ir_node *block, void *data) { } } +/** + * Emit an exception label if the current instruction can fail. + */ +void ia32_emit_exc_label(ia32_emit_env_t *env, const ir_node *node) { + if (get_ia32_exc_label(node)) { + be_emit_irprintf(env->emit, ".EXL%u\n", 0); + be_emit_write_line(env); + } +} + /** * Main driver. Emits the code for one routine. */ diff --git a/ir/be/ia32/ia32_emitter.h b/ir/be/ia32/ia32_emitter.h index d2484b53e..f8fe677ee 100644 --- a/ir/be/ia32/ia32_emitter.h +++ b/ir/be/ia32/ia32_emitter.h @@ -58,5 +58,6 @@ void ia32_emit_adr(ia32_emit_env_t *env, const ir_node *node); void ia32_emit_x87_binop(ia32_emit_env_t *env, const ir_node *node); void ia32_gen_routine(ia32_code_gen_t *cg, ir_graph *irg); +void ia32_emit_exc_label(ia32_emit_env_t *env, const ir_node *node); #endif /* FIRM_BE_IA32_IA32_EMITTER_H */ -- 2.20.1