11 #ifndef FIRM_IR_IRGRAPH_H 
   12 #define FIRM_IR_IRGRAPH_H 
   16 #include "firm_types.h" 
ir_node * get_idx_irn(const ir_graph *irg, unsigned idx)
Returns the node for an index. 
postdominance information about the graph is valid 
struct ir_type ir_type
Type. 
int irg_has_properties(const ir_graph *irg, ir_graph_properties_t props)
queries whether irg has the props properties set 
void inc_irg_block_visited(ir_graph *irg)
Increments block visited counter by one. 
ir_graph_constraints_t
graph constraints: These are typically used when lowering a graph for a target machine, typically you get stricter constraints the closer you get to a real machine. 
irg_callee_info_state
state: callee_information_state Call nodes contain a list of possible callees. 
ir_visited_t get_max_irg_visited(void)
Returns interprocedural node visited counter. 
void set_irg_block_visited(ir_graph *irg, ir_visited_t i)
Sets block visited counter. 
op_pin_state get_irg_pinned(const ir_graph *irg)
state: op_pin_state_pinned The graph is "op_pin_state_pinned" if all nodes are associated with a basi...
No tuple nodes exist in the graph. 
void assure_irg_properties(ir_graph *irg, ir_graph_properties_t props)
Ensures that a graph fulfills all properties stated in state. 
out edges (=iredges) are enable and there are no unused nodes that can be reached by following them ...
ir_graph * new_ir_graph(ir_entity *ent, int n_loc)
Create a new ir graph to build ir for a procedure. 
void confirm_irg_properties(ir_graph *irg, ir_graph_properties_t props)
Invalidates all graph properties/analysis data except the ones specified in props. 
struct ir_graph ir_graph
Procedure Graph. 
IR-node visited flags are used. 
Allows localopts to remove edges to unreachable code. 
void set_irg_frame_type(ir_graph *irg, ir_type *ftp)
Sets the frame type of an IR graph. 
Block visited flags are used. 
int irg_is_constrained(const ir_graph *irg, ir_graph_constraints_t constraints)
queries whether irg is at least as constrained as constraints. 
int get_irg_n_locs(ir_graph *irg)
Returns the number of value numbers of an IR graph. 
loopinfo is computed and up to date 
void ir_free_resources(ir_graph *irg, ir_resources_t resources)
Frees previously reserved resources. 
We have a backend graph: all data values have register constraints annotated. 
void add_irg_constraints(ir_graph *irg, ir_graph_constraints_t constraints)
sets constraints on the graph irg 
ir_node * get_irg_start_block(const ir_graph *irg)
Returns the start block of an IR graph. 
ir_node * get_irg_end_block(const ir_graph *irg)
Returns the end block of an IR graph. 
outs (irouts) are computed and up to date 
There are normalisations where there is no "best" representative. 
ir_visited_t get_irg_visited(const ir_graph *irg)
Returns node visited counter. 
ir_resources_t ir_resources_reserved(const ir_graph *irg)
Returns currently reserved resources. 
void ir_reserve_resources(ir_graph *irg, ir_resources_t resources)
Reserves resources of a graph. 
void set_irg_args(ir_graph *irg, ir_node *node)
Sets the node that represents the argument pointer of the given IR graph. 
void set_irg_loc_description(ir_graph *irg, int n, void *description)
Sets a description for local value n. 
List of all graph properties that are only affected by control flow changes. 
IR-loop link fields are used. 
graph contains no Bad nodes 
entity usage information is computed and up to date 
op_pin_state
pinned states. 
void set_irg_link(ir_graph *irg, void *thing)
A void * field to link arbitrary information to the node. 
Block Phi lists are used. 
List of all graph properties. 
size_t get_irg_idx(const ir_graph *irg)
Returns the graph number. 
dominance frontiers information is calculated 
void * get_irg_loc_description(ir_graph *irg, int n)
Returns the description for local value n. 
void clear_irg_properties(ir_graph *irg, ir_graph_properties_t props)
clears some graph properties 
irg_callee_info_state get_irg_callee_info_state(const ir_graph *irg)
Returns the callee_info_state of an IR graph. 
struct ir_entity ir_entity
Entity. 
ir_entity * get_irg_entity(const ir_graph *irg)
Returns the entity of an IR graph. 
ir_resources_t
Debug helpers: You can indicate whether you are currently using visited or block_visited flags...
ir_node * get_irg_no_mem(const ir_graph *irg)
Returns the NoMem node of the given IR graph. 
void inc_irg_visited(ir_graph *irg)
Increments node visited counter by one. 
long get_irg_graph_nr(const ir_graph *irg)
Returns the graph number. 
unsigned get_irg_last_idx(const ir_graph *irg)
Returns the last irn index for this graph. 
mode_b nodes have been lowered so you should not create any new nodes with mode_b (except for Cmp) ...
void set_irg_end(ir_graph *irg, ir_node *node)
Sets the End node of an IR graph. 
graph contains no critical edges 
ir_node * get_irg_initial_mem(const ir_graph *irg)
Returns the node that represents the initial memory of the given IR graph. 
void set_irg_initial_mem(ir_graph *irg, ir_node *node)
Sets the node that represents the initial memory of the given IR graph. 
ir_visited_t inc_max_irg_visited(void)
Increment interprocedural node visited counter by one. 
ir_type * get_irg_frame_type(ir_graph *irg)
Returns the frame type of an IR graph. 
graph contains as many returns as possible 
ir_node * get_irg_args(const ir_graph *irg)
Returns the node that represents the argument pointer of the given IR graph. 
void set_irg_callee_info_state(ir_graph *irg, irg_callee_info_state s)
Sets the callee_info_state of an IR graph. 
void add_irg_properties(ir_graph *irg, ir_graph_properties_t props)
sets some state properties on the graph 
void set_irg_no_mem(ir_graph *irg, ir_node *node)
Sets the NoMem node of graph irg. 
Block mark bits are used. 
struct ir_node ir_node
Procedure Graph Node. 
void * get_irg_link(const ir_graph *irg)
Return void* field previously set by set_irg_link() 
void set_irg_frame(ir_graph *irg, ir_node *node)
Sets the node that represents the frame pointer of the given IR graph. 
void set_irg_entity(ir_graph *irg, ir_entity *ent)
Sets the entity of an IR graph. 
ir_visited_t get_irg_block_visited(const ir_graph *irg)
Returns block visited counter. 
ir_node * get_irg_end(const ir_graph *irg)
Returns the End node of an IR graph. 
void set_irg_end_block(ir_graph *irg, ir_node *node)
Sets the end block of an IR graph. 
void clear_irg_constraints(ir_graph *irg, ir_graph_constraints_t constraints)
clears some graph constraints 
void set_irg_start(ir_graph *irg, ir_node *node)
Sets the Start node of an IR graph. 
there exists no (obviously) unreachable code in the graph. 
graph contains at most one return 
void free_ir_graph(ir_graph *irg)
Frees the passed irgraph. 
ir_node * get_irg_frame(const ir_graph *irg)
Returns the node that represents the frame pointer of the given IR graph. 
Intermediate language constructs not supported by the backend have been lowered. 
The graph is being constructed: We have a current_block set, and blocks contain mapping of variable n...
ir_graph_properties_t
graph state. 
ir_node * get_irg_start(const ir_graph *irg)
Returns the Start node of an IR graph. 
void set_irg_start_block(ir_graph *irg, ir_node *node)
Sets the start block of an IR graph. 
void set_irg_visited(ir_graph *irg, ir_visited_t i)
Sets node visited counter. 
void set_max_irg_visited(int val)
Sets interprocedural node visited counter. 
dominance information about the graph is valid 
Should not construct more nodes which irarch potentially breaks down. 
IR-node link fields are used.