X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=include%2Flibfirm%2Firgmod.h;h=038dd13ed0b4e40471b0db8e89cb8d5a26ff3b2d;hb=e824e6962c4532b2d1ef5ad9097df6754f8e560a;hp=0cf74e4fef96a8c5f25bfe1391978aa821ccbcbb;hpb=3d4dd6298e267104c5484db8cb551d6d51ab6461;p=libfirm diff --git a/include/libfirm/irgmod.h b/include/libfirm/irgmod.h index 0cf74e4fe..038dd13ed 100644 --- a/include/libfirm/irgmod.h +++ b/include/libfirm/irgmod.h @@ -21,7 +21,6 @@ * @file * @brief Support for ir graph modification. * @author Martin Trapp, Christian Schaefer, Goetz Lindenmaier - * @version $Id$ */ #ifndef FIRM_IR_IRGMOD_H #define FIRM_IR_IRGMOD_H @@ -29,8 +28,12 @@ #include "firm_types.h" #include "begin.h" -/** Exchanges two nodes by conserving edges leaving old (i.e., - pointers pointing to old). Turns the old node into an Id. */ +/** + * Exchanges two nodes by conserving edges leaving old (i.e., + * pointers pointing to old). + * The nodes op will be changed to op_Deleted and you must not do anything with + * the node anymore except testing its op. + */ FIRM_API void exchange(ir_node *old, ir_node *nw); /** Turns a node into a "useless" Tuple. @@ -51,7 +54,6 @@ FIRM_API void turn_into_tuple(ir_node *node, int arity); * Further it collects all Proj nodes in a list of the node producing * the tuple. In case of nested tuples the Projs are collected in the * node producing the outermost Tuple. - * All partBlocks are linked to its macroblock header. * All other link fields are cleared afterwards. */ FIRM_API void collect_phiprojs(ir_graph *irg); @@ -63,10 +65,11 @@ FIRM_API void collect_phiprojs(ir_graph *irg); * (old_block) of node. Moves node and its predecessors from old_block to * new_block. Moves all Projs that depend on moved nodes and are in old_block * to new_block. Moves all Phi nodes from old_block to new_block. To achieve - * this the routine assumes that all Phi nodes are in the Phi list (see get_Block_phis()) - * of old_block. Further it assumes that all Proj nodes are accessible by the link field - * of the nodes producing the Tuple and all partBlocks are linked to its MacroBlock header. - * This can be established by collect_phiprojs(). part_block() conserves this property. + * this the routine assumes that all Phi nodes are in the Phi list (see + * get_Block_phis()) of old_block. + * Further it assumes that all Proj nodes are accessible by the link field of + * the nodes producing the Tuple. This can be established by collect_phiprojs(). + * part_block() conserves this property. * Adds a Jmp node to new_block that jumps to old_block. * * @param node The node were to break the block @@ -74,8 +77,15 @@ FIRM_API void collect_phiprojs(ir_graph *irg); FIRM_API void part_block(ir_node *node); /** - * Kill a node by setting its predecessors to Bad and finally - * exchange the node by Bad itself. + * Same as part_block() but works with out-edges so you don't have to call + * collect_phiprojs. + * This variant also removes all predecessors of the old block and returns + * it. You are responsible to add control flow predecessors to it. + */ +FIRM_API ir_node *part_block_edges(ir_node *node); + +/** + * Kill a node. No other node may have this node as operand. */ FIRM_API void kill_node(ir_node *node);