PandA-2024.02
|
Dominator o post-dominator data structure. More...
#include <Dominance.hpp>
Public Types | |
enum | cdi_direction { CDI_DOMINATORS, CDI_POST_DOMINATORS, CDI_NONE } |
type of computation. More... | |
enum | dom_state { DOM_NONE, DOM_NO_FAST_QUERY, DOM_OK } |
type of information stored in dom_info data structure More... | |
Public Member Functions | |
dominance (const dominance< GraphObj > &)=delete | |
Deleted copy constructor for Weffc++. More... | |
dominance< GraphObj > | operator= (const dominance< GraphObj > &)=delete |
Deleted assignment operator for Weffc++. More... | |
void | calculate_dominance_info (enum dominance::cdi_direction dir) |
The main entry point into this module. More... | |
dominance (const GraphObj &_g, const Vertex _en_block, const Vertex _ex_block, const ParameterConstRef _param) | |
Constructor for the dominance class. More... | |
Vertex | get_immediate_dominator (Vertex v) const |
Return the immediate dominator of a Vertex. More... | |
const CustomUnorderedMapStable< Vertex, CustomOrderedSet< Vertex > > | getAllDominated () const |
Returns a map containing, for each Vertex, a set formed by all the vertices dominated by it (all the dominator relationships, not only the direct one are considered). More... | |
const CustomUnorderedMapStable< Vertex, Vertex > & | get_dominator_map () const |
Return the dominators tree as a map between Vertex and its immediate dominator. More... | |
Private Types | |
using | Vertex = typename boost::graph_traits< const GraphObj >::vertex_descriptor |
Definition of Vertex. More... | |
using | Vertex_iterator = typename boost::graph_traits< const GraphObj >::vertex_iterator |
Vertex_iterator definition. More... | |
Private Attributes | |
enum cdi_direction | dom_dir |
This variable store the direction for which the calculus is done. More... | |
enum dom_state | dom_computed |
Whether the dominators and the postdominators are available. */. More... | |
const GraphObj & | g |
Flow graph reference. More... | |
const Vertex | en_block |
Start block (ENTRY_BLOCK_PTR for forward problem, EXIT_BLOCK for backward problem). More... | |
const Vertex | ex_block |
Ending block. More... | |
CustomUnorderedMapStable< Vertex, Vertex > | dom |
After the algorithm is done, dom[x] contains the immediate dominator of x. More... | |
const ParameterConstRef | param |
The set of input parameters. More... | |
int | debug_level |
Debug level. More... | |
Friends | |
some friend classes | |
class | loop_regions_computation |
class | add_loop_nop |
Dominator o post-dominator data structure.
Definition at line 627 of file Dominance.hpp.
|
private |
Definition of Vertex.
Definition at line 657 of file Dominance.hpp.
|
private |
Vertex_iterator definition.
Definition at line 660 of file Dominance.hpp.
enum dominance::cdi_direction |
type of computation.
Enumerator | |
---|---|
CDI_DOMINATORS | |
CDI_POST_DOMINATORS | |
CDI_NONE |
Definition at line 633 of file Dominance.hpp.
enum dominance::dom_state |
type of information stored in dom_info data structure
Enumerator | |
---|---|
DOM_NONE | Not computed at all. |
DOM_NO_FAST_QUERY | The data is OK, but the fast query data are not usable. |
DOM_OK | Everything is ok. |
Definition at line 640 of file Dominance.hpp.
|
delete |
Deleted copy constructor for Weffc++.
|
inline |
Constructor for the dominance class.
_g | is the starting graph |
_en_block | is the entry Vertex |
_ex_block | is the exit_Vertex |
dl | is the debug_level |
Definition at line 741 of file Dominance.hpp.
|
inline |
The main entry point into this module.
dir | is set depending on whether we want to compute dominators or postdominators. |
store the intermediate information used to compute dominator or post dominator information
store the intermediate information used to compute dominator or post dominator information
fast query not yet supported
Definition at line 701 of file Dominance.hpp.
Referenced by weak_dominance::calculate_weak_dominance_info(), Bit_Value::Initialize(), and eSSA::InternalExec().
|
inline |
Return the dominators tree as a map between Vertex and its immediate dominator.
Definition at line 806 of file Dominance.hpp.
Referenced by weak_dominance::calculate_weak_dominance_info().
|
inline |
Return the immediate dominator of a Vertex.
v | is the node considered. |
Definition at line 757 of file Dominance.hpp.
Referenced by Loops::DetectLoops(), BBCdgComputation::InternalExec(), EdgeCWriter::writeRoutineInstructions_rec(), and CWriter::writeRoutineInstructions_rec().
|
inline |
Returns a map containing, for each Vertex, a set formed by all the vertices dominated by it (all the dominator relationships, not only the direct one are considered).
Definition at line 767 of file Dominance.hpp.
Referenced by Loops::DetectLoops().
|
delete |
Deleted assignment operator for Weffc++.
|
friend |
Definition at line 653 of file Dominance.hpp.
|
friend |
Definition at line 652 of file Dominance.hpp.
|
private |
Debug level.
Definition at line 685 of file Dominance.hpp.
|
private |
After the algorithm is done, dom[x] contains the immediate dominator of x.
Definition at line 679 of file Dominance.hpp.
Whether the dominators and the postdominators are available. */.
Definition at line 668 of file Dominance.hpp.
|
private |
This variable store the direction for which the calculus is done.
Definition at line 665 of file Dominance.hpp.
Start block (ENTRY_BLOCK_PTR for forward problem, EXIT_BLOCK for backward problem).
Definition at line 674 of file Dominance.hpp.
Ending block.
Definition at line 676 of file Dominance.hpp.
|
private |
Flow graph reference.
Definition at line 671 of file Dominance.hpp.
|
private |
The set of input parameters.
Definition at line 682 of file Dominance.hpp.