13#ifndef FIRM_ANA_CALLGRAPH_H
14#define FIRM_ANA_CALLGRAPH_H
17#include "firm_types.h"
irp_callgraph_state
Flag to indicate state of callgraph.
size_t get_irg_caller_loop_depth(const ir_graph *irg, size_t pos)
Returns the maximal loop depth of call nodes that call along this edge.
int is_irg_caller_backedge(const ir_graph *irg, size_t pos)
Returns non-zero if the caller at position pos is "a backedge", i.e.
void analyse_loop_nesting_depth(void)
Computes the interprocedural loop nesting information.
int has_irg_caller_backedge(const ir_graph *irg)
Returns non-zero if the irg has a backedge caller.
void free_callgraph(void)
Destruct the callgraph.
void callgraph_walk_func(ir_graph *g, void *env)
A function type for functions passed to the callgraph walker.
loop_nesting_depth_state
The state of loop nesting depth.
irp_callgraph_state get_irp_callgraph_state(void)
Returns the callgraph state of the program representation.
size_t get_irg_n_callers(const ir_graph *irg)
Returns the number of procedures that call the given irg.
loop_nesting_depth_state get_irp_loop_nesting_depth_state(void)
Returns the nesting depth state of the program representation.
void set_irp_loop_nesting_depth_state_inconsistent(void)
Marks the nesting depth state of the program representation as inconsistent.
int has_irg_callee_backedge(const ir_graph *irg)
Returns non-zero if the irg has a backedge callee.
void find_callgraph_recursions(void)
Compute the backedges that represent recursions and a looptree.
double get_irg_method_execution_frequency(const ir_graph *irg)
Returns the method execution frequency of a graph.
size_t get_irg_n_callees(const ir_graph *irg)
Returns the number of procedures that are called by the given irg.
void set_irp_loop_nesting_depth_state(loop_nesting_depth_state s)
Sets the nesting depth state of the program representation.
int is_irg_callee_backedge(const ir_graph *irg, size_t pos)
Returns non-zero if the callee at position pos is "a backedge", i.e.
ir_graph * get_irg_caller(const ir_graph *irg, size_t pos)
Returns the caller at position pos.
ir_graph * get_irg_callee(const ir_graph *irg, size_t pos)
Returns the callee at position pos.
void compute_callgraph(void)
Construct the callgraph.
void set_irp_callgraph_state(irp_callgraph_state s)
Sets the callgraph state of the program representation.
size_t get_irg_callee_loop_depth(const ir_graph *irg, size_t pos)
Returns the maximal loop depth of call nodes that call along this edge.
void callgraph_walk(callgraph_walk_func *pre, callgraph_walk_func *post, void *env)
Walks over the callgraph.
@ irp_callgraph_and_calltree_consistent
Both callgraph and calltree are consistent.
@ irp_callgraph_inconsistent
Callgraph is allocated but inconsistent.
@ irp_callgraph_none
No callgraph allocated.
@ irp_callgraph_consistent
Callgraph constistent but calltree is inconsistent.
@ loop_nesting_depth_consistent
Loop nesting depth information is computed and correct.
@ loop_nesting_depth_none
Loop nesting depths are not computed, no memory is allocated, access fails.
@ loop_nesting_depth_inconsistent
Loop nesting depth is computed but the graphs have been changed since.
struct ir_graph ir_graph
Procedure Graph.