libFirm
Loading...
Searching...
No Matches
callgraph.h
1/*
2 * This file is part of libFirm.
3 * Copyright (C) 2012 University of Karlsruhe.
4 */
5
13#ifndef FIRM_ANA_CALLGRAPH_H
14#define FIRM_ANA_CALLGRAPH_H
15
16#include <stddef.h>
17#include "firm_types.h"
18
19#include "begin.h"
20
47
50
53
55FIRM_API size_t get_irg_n_callers(const ir_graph *irg);
56
58FIRM_API ir_graph *get_irg_caller(const ir_graph *irg, size_t pos);
59
61FIRM_API int is_irg_caller_backedge(const ir_graph *irg, size_t pos);
62
64FIRM_API int has_irg_caller_backedge(const ir_graph *irg);
65
67FIRM_API size_t get_irg_caller_loop_depth(const ir_graph *irg, size_t pos);
68
70FIRM_API size_t get_irg_n_callees(const ir_graph *irg);
71
73FIRM_API ir_graph *get_irg_callee(const ir_graph *irg, size_t pos);
74
76FIRM_API int is_irg_callee_backedge(const ir_graph *irg, size_t pos);
77
79FIRM_API int has_irg_callee_backedge(const ir_graph *irg);
80
82FIRM_API size_t get_irg_callee_loop_depth(const ir_graph *irg, size_t pos);
83
85FIRM_API double get_irg_method_execution_frequency(const ir_graph *irg);
86
92FIRM_API void compute_callgraph(void);
93
95FIRM_API void free_callgraph(void);
96
97
99typedef void callgraph_walk_func(ir_graph *g, void *env);
100
117 callgraph_walk_func *post, void *env);
118
122FIRM_API void find_callgraph_recursions(void);
123
134FIRM_API void analyse_loop_nesting_depth(void);
135
144
147
150
153
156#include "end.h"
157
158#endif
irp_callgraph_state
Flag to indicate state of callgraph.
Definition callgraph.h:41
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.
Definition callgraph.h:99
loop_nesting_depth_state
The state of loop nesting depth.
Definition callgraph.h:137
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.
Definition callgraph.h:45
@ irp_callgraph_inconsistent
Callgraph is allocated but inconsistent.
Definition callgraph.h:44
@ irp_callgraph_none
No callgraph allocated.
Definition callgraph.h:42
@ irp_callgraph_consistent
Callgraph constistent but calltree is inconsistent.
Definition callgraph.h:43
@ loop_nesting_depth_consistent
Loop nesting depth information is computed and correct.
Definition callgraph.h:140
@ loop_nesting_depth_none
Loop nesting depths are not computed, no memory is allocated, access fails.
Definition callgraph.h:138
@ loop_nesting_depth_inconsistent
Loop nesting depth is computed but the graphs have been changed since.
Definition callgraph.h:141
struct ir_graph ir_graph
Procedure Graph.
Definition firm_types.h:74