44 #ifndef TREE_BASIC_BLOCK_HPP 45 #define TREE_BASIC_BLOCK_HPP 67 #define GETID(field) field##_ID 147 explicit bloc(
unsigned int _number);
160 list_of_pred.push_back(a);
169 list_of_succ.push_back(a);
237 const std::list<tree_nodeRef>&
CGetPhiList()
const;
void PushBack(const tree_nodeRef statement, const application_managerRef AppM)
Add a statement as last non controlling statement.
virtual void visit(tree_node_visitor *const v) const
virtual function used to traverse the tree_node data structure.
This struct specifies the field bloc (basic block).
void PushBefore(const tree_nodeRef new_stmt, const tree_nodeRef existing_stmt, const application_managerRef AppM)
Add a statement before a specified one.
const unsigned int number
number is the index of the basic block.
Class managing the schedule of the operations.
std::vector< unsigned int > list_of_succ
list_of_succ is the list of successors.
void update_new_stmt(const application_managerRef &AppM, const tree_nodeRef &new_stmt)
void Replace(const tree_nodeRef old_stmt, const tree_nodeRef new_stmt, const bool move_virtuals, const application_managerRef AppM)
Replace a statement with another one.
void PushFront(const tree_nodeRef statement, const application_managerRef AppM)
Add a statement in front of list of statements.
static const unsigned int EXIT_BLOCK_ID
constant identifying the exit basic block
bool updated_ssa_uses
consistency of ssa uses
const std::list< tree_nodeRef > & CGetPhiList() const
Return the list of phi.
void RemoveStmt(const tree_nodeRef statement, const application_managerRef AppM)
Remove a statement.
void manageCallGraph(const application_managerRef &AppM, const tree_nodeRef &statement)
void RemovePhi(const tree_nodeRef phi)
Remove a phi.
Abstract pure class for the tree structure.
unsigned int loop_id
loop identifier coming from GCC
const std::list< tree_nodeRef > & CGetStmtList() const
Return the list of stmt.
This struct specifies the gimple_assign node (GCC 4.3 tree node).
CustomOrderedSet< unsigned int > live_out
Live_Out of the basic block.
void ReorderLUTs()
ReorderLUTs reorders the LUT statements to fix the def-use relations.
void add_pred(const unsigned int &a)
Add a value to list of pred.
unsigned int hpl
store the relation between the phi defs inserted in the live_out set and phi uses ...
redefinition of set to manage ordered/unordered structures
Template definition of refcount.
CustomOrderedSet< unsigned int > live_in
Live_In of the basic block.
void AddPhi(const tree_nodeRef phi)
Add a value to list of phi node.
const application_managerRef AppM
The application manager.
static const unsigned int ENTRY_BLOCK_ID
constant identifying the entry basic block
bool check_function_call(const tree_nodeRef &statement, gimple_assign *ga, unsigned int &called_function_id)
void add_succ(const unsigned int &a)
Add a value to list of succ.
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
virtual ~bloc()
Destructor.
unsigned int true_edge
in case the last statement is a gimple_cond associated with an if statement this member contains the ...
std::vector< unsigned int > list_of_pred
list_of_pred is the list of predecessors.
std::list< tree_nodeRef > list_of_phi
list_of_phi is a list of eventual phi node presents in the basic block.
size_t removed_phi
Number of removed phi.
ScheduleRef schedule
The reference to the schedule.
CustomUnorderedSet< unsigned int > already_visited
Already visited tree node (used to avoid infinite recursion)
bloc(unsigned int _number)
constructor
std::list< tree_nodeRef > list_of_stmt
list_of_stmt is the list of statements stored in the basic block.
void SetSSAUsesComputed()
Set that uses of ssa have been computed.
unsigned int false_edge
in case the last statement is a gimple_cond associated with an if statement this member contains the ...
size_t CGetNumberRemovedPhi() const
Return the number of removed phi.
void PushAfter(const tree_nodeRef new_stmt, const tree_nodeRef existing_stmt, const application_managerRef AppM)
Add a statement after a specified one.