From ffa5e8ca2c203ff2f0e7d8240a4e2a949690a5f5 Mon Sep 17 00:00:00 2001 From: Michael Beck Date: Thu, 30 Jun 2005 08:12:14 +0000 Subject: [PATCH] add constructors for the IJmp operation [r6136] --- ir/ir/ircons.h | 57 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/ir/ir/ircons.h b/ir/ir/ircons.h index b8e2a6705..8f4aceca4 100644 --- a/ir/ir/ircons.h +++ b/ir/ir/ircons.h @@ -243,13 +243,14 @@ * constructors and at the paragraph COPING WITH DATA OBJECTS at the * end of this documentation. * - * The comfortable interface contains the following routines further explained + * The comfortable interface contains the following routines further explained * below: * * ir_node *new_immBlock (void); * ir_node *new_Start (void); * ir_node *new_End (void); * ir_node *new_Jmp (void); + * ir_node *new_IJmp (ir_node *tgt); * ir_node *new_Cond (ir_node *c); * ir_node *new_Return (ir_node *store, int arity, ir_node **in); * ir_node *new_Raise (ir_node *store, ir_node *obj); @@ -448,6 +449,17 @@ * Output: * Control flow to the next block. * + * ir_node *new_IJmp (ir_node *tgt) + * ----------------------- + * + * Creates an IJmp node. + * + * Inputs: + * The node that represents the target jump address + * Output: + * Control flow to an unknown target, must be pinned by + * the End node. + * * ir_node *new_Cond (ir_node *c) * ------------------------------ * @@ -1084,6 +1096,18 @@ ir_node *new_rd_End (dbg_info *db, ir_graph *irg, ir_node *block); */ ir_node *new_rd_Jmp (dbg_info *db, ir_graph *irg, ir_node *block); +/** Constructor for an IJmp node. + * + * IJmp represents control flow to a single control successor not + * statically known i.e. an indirect Jmp. + * + * @param *db A pointer for debug information. + * @param *irg The ir graph the node belongs to. + * @param *block The ir block the node belongs to. + * @param *tgt The ir node representing the target address. + */ +ir_node *new_rd_IJmp (dbg_info *db, ir_graph *irg, ir_node *block, ir_node *tgt); + /** Constructor for a Break node. * * Break represents control flow to a single control successor just as Jmp. @@ -1824,6 +1848,17 @@ ir_node *new_r_End (ir_graph *irg, ir_node *block); */ ir_node *new_r_Jmp (ir_graph *irg, ir_node *block); +/** Constructor for an IJmp node. + * + * IJmp represents control flow to a single control successor not + * statically known i.e. an indirect Jmp. + * + * @param *irg The ir graph the node belongs to. + * @param *block The ir block the node belongs to. + * @param *tgt The ir node representing the target address. + */ +ir_node *new_r_IJmp (ir_graph *irg, ir_node *block, ir_node *tgt); + /** Constructor for a Cond node. * * If c is mode_b represents a conditional branch (if/else). If c is @@ -2513,9 +2548,18 @@ ir_node *new_d_End (dbg_info* db); * * @param *db A pointer for debug information. */ - ir_node *new_d_Jmp (dbg_info* db); +/** Constructor for an IJmp node. + * + * IJmp represents control flow to a single control successor not + * statically known i.e. an indirect Jmp. + * + * @param *db A pointer for debug information. + * @param *tgt The ir node representing the target address. + */ +ir_node *new_d_IJmp (dbg_info *db, ir_node *tgt); + /** Constructor for a Cond node. * * Adds the node to the block in current_ir_block. @@ -3206,6 +3250,15 @@ ir_node *new_EndExcept(void); */ ir_node *new_Jmp (void); +/** Constructor for an IJmp node. + * + * IJmp represents control flow to a single control successor not + * statically known i.e. an indirect Jmp. + * + * @param *tgt The ir node representing the target address. + */ +ir_node *new_IJmp (ir_node *tgt); + /** Constructor for a Break node. * Break represents control flow to a single control successor just as Jmp. * The blocks separated by a break may not be concatenated by an optimization. -- 2.20.1