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