libFirm
cdep.h
1 /*
2  * This file is part of libFirm.
3  * Copyright (C) 2012 University of Karlsruhe.
4  */
5 
11 #ifndef FIRM_ANA_CDEP_H
12 #define FIRM_ANA_CDEP_H
13 
14 #include "firm_types.h"
15 
16 #include "begin.h"
17 
24 FIRM_API void compute_cdep(ir_graph *irg);
25 
27 FIRM_API void free_cdep(ir_graph *irg);
28 
30 FIRM_API ir_node *get_cdep_node(const ir_cdep *cdep);
31 
33 FIRM_API ir_cdep *get_cdep_next(const ir_cdep *cdep);
34 
38 FIRM_API ir_cdep *find_cdep(const ir_node *block);
39 
43 FIRM_API void exchange_cdep(ir_node *old, const ir_node *nw);
44 
51 FIRM_API int is_cdep_on(const ir_node *dependee, const ir_node *candidate);
52 
59 FIRM_API ir_node *get_unique_cdep(const ir_node *block);
60 
66 FIRM_API int has_multiple_cdep(const ir_node *block);
67 
70 #include "end.h"
71 
72 #endif
int has_multiple_cdep(const ir_node *block)
Checks if the given block is control dependent of more than one node.
ir_node * get_cdep_node(const ir_cdep *cdep)
Returns control dependent block.
struct ir_cdep ir_cdep
Control Dependence Analysis Results.
Definition: firm_types.h:86
ir_node * get_unique_cdep(const ir_node *block)
If block is control dependent on exactly one node, returns this node, else NULL.
void free_cdep(ir_graph *irg)
Frees the control dependence info.
struct ir_node ir_node
Procedure Graph Node.
Definition: firm_types.h:53
ir_cdep * get_cdep_next(const ir_cdep *cdep)
Returns next entry in a list of cdeps.
void compute_cdep(ir_graph *irg)
Computes the control dependence graph for a graph.
void exchange_cdep(ir_node *old, const ir_node *nw)
Replaces the control dependence info of old by the info of nw.
ir_cdep * find_cdep(const ir_node *block)
Returns a list of all control dependences of a block.
struct ir_graph ir_graph
Procedure Graph.
Definition: firm_types.h:74
int is_cdep_on(const ir_node *dependee, const ir_node *candidate)
Checks whether dependee is (directly) control dependent on candidate.