libFirm
Traversing

Traverse graphs: More...

Typedefs

typedef void irg_walk_func(ir_node *, void *)
 type for graph-walk callbacks More...
 

Functions

void irg_walk (ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walks over the ir graph. More...
 
void irg_walk_core (ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env)
 core walker function. More...
 
void irg_walk_graph (ir_graph *irg, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walks over all reachable nodes in the ir graph. More...
 
void irg_walk_in_or_dep (ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walks over the ir graph. More...
 
void irg_walk_in_or_dep_graph (ir_graph *irg, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walks over all reachable nodes in the ir graph. More...
 
void irg_walk_topological (ir_graph *irg, irg_walk_func *walker, void *env)
 Walks over all reachable nodes in the graph, ensuring that nodes inside a basic block are visited in topological order. More...
 
void all_irg_walk (irg_walk_func *pre, irg_walk_func *post, void *env)
 Executes irg_walk(end, pre, post, env) for all irgraphs in irprog. More...
 
void irg_block_walk (ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walks only over Block nodes in the graph. More...
 
void irg_block_walk_graph (ir_graph *irg, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walks only over reachable Block nodes in the graph. More...
 
void walk_const_code (irg_walk_func *pre, irg_walk_func *post, void *env)
 Walks over all code in const_code_irg. More...
 
void irg_walk_blkwise_graph (ir_graph *irg, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walks over reachable nodes in block-wise topological order, i.e. More...
 
void irg_walk_blkwise_dom_top_down (ir_graph *irg, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walks over reachable nodes in block-wise topological order, i.e. More...
 
void irg_walk_anchors (ir_graph *irg, irg_walk_func *pre, irg_walk_func *post, void *env)
 Additionally walk over all anchors. More...
 
void irg_walk_2 (ir_node *node, irg_walk_func *pre, irg_walk_func *post, void *env)
 Walker function which does not increase the visited flag before walking. More...
 

Detailed Description

Traverse graphs:

Typedef Documentation

typedef void irg_walk_func(ir_node *, void *)

type for graph-walk callbacks

Definition at line 94 of file firm_types.h.

Function Documentation

void all_irg_walk ( irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Executes irg_walk(end, pre, post, env) for all irgraphs in irprog.

Parameters
prewalker function, executed before the predecessor of a node are visited
postwalker function, executed after the predecessor of a node are visited
envenvironment, passed to pre and post

This function executes irg_walk(end, pre, post, env) for all irgraphs in irprog. Does not use the link field.

void irg_block_walk ( ir_node node,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walks only over Block nodes in the graph.

Parameters
nodethe start node
prewalker function, executed before the predecessor of a node are visited
postwalker function, executed after the predecessor of a node are visited
envenvironment, passed to pre and post

This function Walks only over Block nodes in the graph. Has its own visited flag, so that it can be interleaved with the other walker. If a non-block is passed, starts at the block this node belongs to. If end is passed also visits kept alive blocks. Does not use the link field.

void irg_block_walk_graph ( ir_graph irg,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walks only over reachable Block nodes in the graph.

Parameters
irgthe irg graph
prewalker function, executed before the predecessor of a node are visited
postwalker function, executed after the predecessor of a node are visited
envenvironment, passed to pre and post

Like irg_block_walk(), but walks over all reachable blocks in the ir graph, starting at the end block. Does not use the link field.

void irg_walk ( ir_node node,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walks over the ir graph.

Walks over the ir graph, starting at the node given as first argument. Executes pre before visiting the predecessor of a node, post after. irg_walk uses the visited flag in irg and the nodes to determine visited nodes. It executes inc_irg_visited() to generate a new flag. It marks the node as visited before executing pre. The void* env can be used to pass status information between the pre and post functions. Does not use the link fields.

Parameters
nodethe start node
prewalker function, executed before the predecessor of a node are visited
postwalker function, executed after the predecessor of a node are visited
envenvironment, passed to pre and post
void irg_walk_2 ( ir_node node,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walker function which does not increase the visited flag before walking.

Do not use this unless you know what you are doing.

void irg_walk_anchors ( ir_graph irg,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Additionally walk over all anchors.

This function visits all anchor nodes that otherwise might not been visited in a walk, for instance the Bad() node.

Parameters
irgthe irg graph
prewalker function, executed before the predecessor of a node are visited
postwalker function, executed after the predecessor of a node are visited
envenvironment, passed to pre and post
void irg_walk_blkwise_dom_top_down ( ir_graph irg,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walks over reachable nodes in block-wise topological order, i.e.

visit all nodes in a block before going to another block, starting at the end operation. Visit the blocks in dominator tree top-down order. Executes pre before visiting the predecessor of a node, post after. irg_walk_blkwise_graph() uses the visited flag in irg and the nodes to determine visited nodes. It executes inc_irg_visited() to generate a new flag. It marks the node as visited before executing pre. The void *env can be used to pass status information between the pre and post functions. Does not use the link fields.

Parameters
irgthe irg graph
prewalker function, executed before the predecessor of a node are visited
postwalker function, executed after the predecessor of a node are visited
envenvironment, passed to pre and post
void irg_walk_blkwise_graph ( ir_graph irg,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walks over reachable nodes in block-wise topological order, i.e.

visit all nodes in a block before going to another block, starting at the end operation. Executes pre before visiting the predecessor of a node, post after. irg_walk_blkwise_graph() uses the visited flag in irg and the nodes to determine visited nodes. It executes inc_irg_visited() to generate a new flag. It marks the node as visited before executing pre. The void *env can be used to pass status information between the pre and post functions. Does not use the link fields.

Parameters
irgthe irg graph
prewalker function, executed before the predecessor of a node are visited
postwalker function, executed after the predecessor of a node are visited
envenvironment, passed to pre and post
void irg_walk_core ( ir_node node,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

core walker function.

Does NOT call inc_irg_visited before walking.

void irg_walk_graph ( ir_graph irg,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walks over all reachable nodes in the ir graph.

Parameters
irgthe irg graph
prewalker function, executed before the predecessor of a node are visited
postwalker function, executed after the predecessor of a node are visited
envenvironment, passed to pre and post

Like irg_walk(), but walks over all reachable nodes in the ir graph, starting at the end operation. Does not use the link field.

void irg_walk_in_or_dep ( ir_node node,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walks over the ir graph.

Walks over the ir graph, starting at the node given as first argument. Executes pre before visiting the predecessor of a node, post after. irg_walk uses the visited flag in irg and the nodes to determine visited nodes. It executes inc_irg_visited() to generate a new flag. It marks the node as visited before executing pre. The void* env can be used to pass status information between the pre and post functions. Does not use the link fields. This walker also follows additional dependency egdes.

Parameters
nodethe start node
prewalker function, executed before the predecessor of a node are visited
postwalker function, executed after the predecessor of a node are visited
envenvironment, passed to pre and post
void irg_walk_in_or_dep_graph ( ir_graph irg,
irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walks over all reachable nodes in the ir graph.

Parameters
irgthe irg graph
prewalker function, executed before the predecessor of a node are visited
postwalker function, executed after the predecessor of a node are visited
envenvironment, passed to pre and post

Like irg_walk(), but walks over all reachable nodes in the ir graph, starting at the end operation. Does not use the link field. This walker also follows additional dependency egdes.

void irg_walk_topological ( ir_graph irg,
irg_walk_func walker,
void *  env 
)

Walks over all reachable nodes in the graph, ensuring that nodes inside a basic block are visited in topological order.

Nodes in different blocks might get visited in an interleaved order.

Parameters
irgthe irg graph
walkerwalker function
envenvironment, passed to walker

Does not use the link field.

void walk_const_code ( irg_walk_func pre,
irg_walk_func post,
void *  env 
)

Walks over all code in const_code_irg.

Parameters
prewalker function, executed before the predecessor of a node are visited
postwalker function, executed after the predecessor of a node are visited
envenvironment, passed to pre and post

This function walks over all code in const_code_irg. Uses visited flag in const_code_irg. Does not use the link field.