X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fcommon%2Firtools.h;h=afa6e7f0c3c02eb951de23907864add54e5df0f5;hb=04321ea9f9ac1185bd7092813c34683aa15cd05f;hp=188725c705515e765bfeda574284b72d9fb90d8c;hpb=049e7746fb729a28e90e69f02899c76c7b98b275;p=libfirm diff --git a/ir/common/irtools.h b/ir/common/irtools.h index 188725c70..afa6e7f0c 100644 --- a/ir/common/irtools.h +++ b/ir/common/irtools.h @@ -26,7 +26,6 @@ #ifndef FIRM_COMMON_IRTOOLS_H #define FIRM_COMMON_IRTOOLS_H -#include "firm_config.h" #include "firm_types.h" #include "lc_opts.h" @@ -69,11 +68,47 @@ void firm_pset_dump(pset *set); /** * The famous clear_link() walker-function. - * Do not implement it by yourself, use this one + * Sets all links fields of visited nodes to NULL. + * Do not implement it by yourself, use this one. */ void firm_clear_link(ir_node *n, void *env); /** + * The famous clear_link_and_block_lists() walker-function. + * Sets all links fields of visited nodes to NULL. + * Additionally, clear all Phi-lists of visited blocks. + * Do not implement it by yourself, use this one + */ +void firm_clear_node_and_phi_links(ir_node *n, void *env); + +/** + * Creates an exact copy of a node with same inputs and attributes in the + * same block. + * + * @param node the node to copy + */ +ir_node *exact_copy(const ir_node *node); + +/** + * Create an exact copy of a node with same inputs and attributes in the same + * block but puts the node on a graph which might be different than the graph + * of the original node. + * Note: You have to fixup the inputs/block later + */ +ir_node *irn_copy_into_irg(const ir_node *node, ir_graph *irg); + +/** + * This is a helper function used by some routines copying irg graphs + * This assumes that we have "old" nodes which have been copied to "new" + * nodes; The inputs of the new nodes still point to old nodes. + * + * Given an old(!) node this function rewires the matching new_node + * so that all its inputs point to new nodes afterwards. + */ +void irn_rewire_inputs(ir_node *node); + +/** + * @deprecated * Copies a node to a new irg. The Ins of the new node point to * the predecessors on the old irg. n->link points to the new node. * @@ -86,15 +121,4 @@ void firm_clear_link(ir_node *n, void *env); */ void copy_irn_to_irg(ir_node *n, ir_graph *irg); -/** - * Creates an exact copy of a node. - * The copy resists on the same graph in the same block. - * - * @param n the node to copy - * - * @note If the copy is not changed, the next CSE operation will - * replace it by the original, so beware. - */ -ir_node *exact_copy(const ir_node *n); - #endif