2 * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved.
4 * This file is part of libFirm.
6 * This file may be distributed and/or modified under the terms of the
7 * GNU General Public License version 2 as published by the Free Software
8 * Foundation and appearing in the file LICENSE.GPL included in the
9 * packaging of this file.
11 * Licensees holding valid libFirm Professional Edition licenses may use
12 * this file in accordance with the libFirm Commercial License.
13 * Agreement provided with the Software.
15 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
16 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 * @brief Various irnode constructors. Automatic construction
23 * of SSA representation. Private Header
24 * @author Martin Trapp, Christian Schaefer, Michael Beck
27 #ifndef FIRM_IR_IRCONS_T_H
28 #define FIRM_IR_IRCONS_T_H
31 #include "irgraph_t.h"
34 * Initializes the graph construction.
36 * @param func callback that is called if a uninitialized
37 * variable is detected
39 * @see uninitialized_local_variable_func_t
41 void firm_init_cons(uninitialized_local_variable_func_t *func);
44 * Creates a new Anchor node.
46 ir_node *new_Anchor(ir_graph *irg);
49 * Allocate a frag array for a node if the current graph state is phase_building.
51 * @param irn the node for which the frag array should be allocated
52 * @param op the opcode of the (original) node, if does not match opcode of irn,
54 * @param frag_store the address of the frag store in irn attributes, if this
55 * address contains a value != NULL, does nothing
57 void firm_alloc_frag_arr(ir_node *irn, ir_op *op, ir_node ***frag_store);
60 * Restarts SSA construction on the given graph with n_loc
63 * @param irg the graph on which the SSA construction is restarted
64 * @param n_loc number of new variables
66 * After this function is complete, the graph is in phase_building
67 * again and set_value()/get_value() and mature_block() can be used
68 * to construct new values.
70 * @note do not use get_mem()/set_mem() they will build a new memory
71 * instead of modifying the old one which might be not what you expect...
73 void ssa_cons_start(ir_graph *irg, int n_loc);
76 * Finalize the (restarted) SSA construction. Matures all blocks that are
77 * not matured yet and reset the graph state to phase_high.
79 * @param irg the graph on which the SSA construction was restarted
81 void ssa_cons_finish(ir_graph *irg);