X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fir%2Fircons_t.h;h=5ea921027cd7c6e3c1bfd1e0f9738b3ced7a8d6e;hb=3c3425a50a1d721b74a015c6812257e32feeac85;hp=da7c228dbcbd3027c6da43451c468c5e7b75cb1f;hpb=eb08138c6b80c169945568e4414f491a9bc20388;p=libfirm diff --git a/ir/ir/ircons_t.h b/ir/ir/ircons_t.h index da7c228db..5ea921027 100644 --- a/ir/ir/ircons_t.h +++ b/ir/ir/ircons_t.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 1995-2007 University of Karlsruhe. All right reserved. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. * * This file is part of libFirm. * @@ -17,47 +17,60 @@ * PURPOSE. */ -/* - * Project: libFIRM - * File name: ir/ir/ircons_t.h - * Purpose: Various irnode constructors. Automatic construction - * of SSA representation. - * Author: Martin Trapp, Christian Schaefer - * Modified by: Michael Beck - * Created: - * CVS-ID: $Id$ - * Copyright: (c) 1998-2003 Universität Karlsruhe +/** + * @file + * @brief Various irnode constructors. Automatic construction + * of SSA representation. Private Header + * @author Martin Trapp, Christian Schaefer, Michael Beck */ -#ifndef _IRCONS_T_H_ -#define _IRCONS_T_H_ +#ifndef FIRM_IR_IRCONS_T_H +#define FIRM_IR_IRCONS_T_H #include "ircons.h" -# include "irgraph_t.h" +#include "irgraph_t.h" /** - * Initializes the graph construction. - * - * @param func callback that is called if a uninitialized - * variable is detected - * - * @see uninitialized_local_variable_func_t + * Creates a new Anchor node. */ -void init_cons(uninitialized_local_variable_func_t *func); +ir_node *new_r_Anchor(ir_graph *irg); -/* inline functions */ +/** create new block node without immediately optimizing it. + * This is an internal helper function for new_ir_graph() */ +ir_node *new_r_Block_noopt(ir_graph *irg, int arity, ir_node *in[]); -static INLINE ir_node * -_new_d_Bad(void) { - return current_ir_graph->anchors[anchor_bad]; -} - -static INLINE ir_node * -_new_d_NoMem(void) { - return current_ir_graph->anchors[anchor_no_mem]; -} +/** + * Allocate a frag array for a node if the current graph state is phase_building. + * + * @param irn the node for which the frag array should be allocated + * @param op the opcode of the (original) node, if does not match opcode of irn, + * nothing is done + * @param frag_store the address of the frag store in irn attributes, if this + * address contains a value != NULL, does nothing + */ +void firm_alloc_frag_arr(ir_node *irn, ir_op *op, ir_node ***frag_store); +/** + * Restarts SSA construction on the given graph with n_loc + * new values. + * + * @param irg the graph on which the SSA construction is restarted + * @param n_loc number of new variables + * + * After this function is complete, the graph is in phase_building + * again and set_value()/get_value() and mature_block() can be used + * to construct new values. + * + * @note do not use get_mem()/set_mem() they will build a new memory + * instead of modifying the old one which might be not what you expect... + */ +void ssa_cons_start(ir_graph *irg, int n_loc); -#define new_d_Bad() _new_d_Bad() -#define new_d_NoMem() _new_d_NoMem() +/** + * Finalize the (restarted) SSA construction. Matures all blocks that are + * not matured yet and reset the graph state to phase_high. + * + * @param irg the graph on which the SSA construction was restarted + */ +void ssa_cons_finish(ir_graph *irg); -#endif /* _IRCONS_T_H_ */ +#endif