2 * This file is part of libFirm.
3 * Copyright (C) 2012 University of Karlsruhe.
8 * @brief Various irnode constructors. Automatic construction
9 * of SSA representation. Private Header
10 * @author Martin Trapp, Christian Schaefer, Michael Beck
12 #ifndef FIRM_IR_IRCONS_T_H
13 #define FIRM_IR_IRCONS_T_H
16 #include "irgraph_t.h"
19 * Creates a new Anchor node.
21 ir_node *new_r_Anchor(ir_graph *irg);
23 /** create new block node without immediately optimizing it.
24 * This is an internal helper function for new_ir_graph() */
25 ir_node *new_r_Block_noopt(ir_graph *irg, int arity, ir_node *in[]);
28 * Allocate a frag array for a node if the current graph state is phase_building.
30 * @param irn the node for which the frag array should be allocated
31 * @param op the opcode of the (original) node, if does not match opcode of irn,
33 * @param frag_store the address of the frag store in irn attributes, if this
34 * address contains a value != NULL, does nothing
36 void firm_alloc_frag_arr(ir_node *irn, ir_op *op, ir_node ***frag_store);
39 * Restarts SSA construction on the given graph with n_loc
42 * @param irg the graph on which the SSA construction is restarted
43 * @param n_loc number of new variables
45 * After this function is complete, the graph is in phase_building
46 * again and set_value()/get_value() and mature_block() can be used
47 * to construct new values.
49 * @note do not use get_mem()/set_mem() they will build a new memory
50 * instead of modifying the old one which might be not what you expect...
52 void ssa_cons_start(ir_graph *irg, int n_loc);
55 * Finalize the (restarted) SSA construction. Matures all blocks that are
56 * not matured yet and reset the graph state to phase_high.
58 * @param irg the graph on which the SSA construction was restarted
60 void ssa_cons_finish(ir_graph *irg);