initial support for exception handling
authorMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Sat, 2 Jun 2007 00:50:50 +0000 (00:50 +0000)
committerMichael Beck <beck@ipd.info.uni-karlsruhe.de>
Sat, 2 Jun 2007 00:50:50 +0000 (00:50 +0000)
[r14261]

ir/be/ia32/ia32_emitter.c
ir/be/ia32/ia32_emitter.h

index cfbe00e..c9d1f74 100644 (file)
@@ -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.
  */
index d2484b5..f8fe677 100644 (file)
@@ -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 */