PandA-2024.02
|
This struct specifies the gimple_phi node. More...
#include <tree_node.hpp>
Public Types | |
enum | { GETID =(gimple_node) = 0, GETID =(gimple_node) = 0 } |
visitor enum More... | |
using | DefEdge = std::pair< tree_nodeRef, unsigned int > |
The type of the def edge. More... | |
using | DefEdgeList = std::list< DefEdge > |
The type of the def edge list. More... | |
Public Types inherited from gimple_node | |
enum | { GETID =(srcp) = 0, GETID =(srcp) = 0, GETID =(srcp) = 0, GETID =(srcp) = 0, GETID =(srcp) = 0, GETID =(srcp) = 0, GETID =(srcp) = 0, GETID =(srcp) = 0, GETID =(srcp) = 0, GETID =(srcp) = 0 } |
visitor enum More... | |
Public Types inherited from WeightedNode | |
enum | { GETID =(tree_node) = 0 } |
visitor enum More... | |
Public Member Functions | |
gimple_phi (unsigned int i) | |
Constructor. More... | |
const DefEdgeList & | CGetDefEdgesList () const |
Return the list of def edges. More... | |
void | RemoveDefEdge (const tree_managerRef &TM, const DefEdge &to_be_removed) |
Remove a defedge. More... | |
void | AddDefEdge (const tree_managerRef &TM, const DefEdge &def_edge) |
Add a defedge. More... | |
void | ReplaceDefEdge (const tree_managerRef &TM, const DefEdge &old_def_edge, const DefEdge &new_def_edge) |
Replace a defedge. More... | |
void | SetDefEdgeList (const tree_managerRef &TM, DefEdgeList new_list_of_def_edge) |
Set the def edge list removing the ond one. More... | |
void | visit (tree_node_visitor *const v) const override |
Redefinition of get_kind_text. More... | |
void | SetSSAUsesComputed () |
Set that uses of ssa have been computed. More... | |
Public Member Functions inherited from gimple_node | |
gimple_node (unsigned int i) | |
Constructor. More... | |
void | SetVdef (const tree_nodeRef &vdef) |
Add a vdef. More... | |
bool | AddVuse (const tree_nodeRef &vuse) |
Add a vuse. More... | |
bool | AddVover (const tree_nodeRef &vover) |
Add a vover. More... | |
Public Member Functions inherited from srcp | |
srcp () | |
constructor More... | |
virtual | ~srcp () |
Destructor. More... | |
Public Member Functions inherited from WeightedNode | |
WeightedNode (unsigned int i) | |
Constructor. More... | |
Public Member Functions inherited from tree_node | |
tree_node (unsigned int i) | |
Constructor. More... | |
virtual | ~tree_node ()=default |
Destructor. More... | |
virtual enum kind | get_kind () const =0 |
Virtual function returning the type of the actual class. More... | |
virtual std::string | get_kind_text () const =0 |
Virtual function returning the name of the actual class. More... | |
std::string | ToString () const |
Print this node as string in gimple format. More... | |
Data Fields | |
tree_nodeRef | res |
res is the new SSA_NAME node created by the PHI node. More... | |
bool | virtual_flag |
flag for virtual phi More... | |
Data Fields inherited from gimple_node | |
tree_nodeRef | memuse |
whole memory operand use More... | |
tree_nodeRef | memdef |
whole memory operand def More... | |
tree_nodeRef | vdef |
vdef of this statement More... | |
TreeNodeSet | vuses |
vuses of this statement More... | |
TreeNodeSet | vovers |
vovers of this statement More... | |
std::vector< tree_nodeRef > | pragmas |
list of pragmas associated to the function More... | |
PointToSolutionRef | use_set |
The point-to set used by this gimple node. More... | |
PointToSolutionRef | clobbered_set |
The clobbered set of this gimple node. More... | |
tree_nodeRef | scpe |
The function to which this gimple_node belongs. More... | |
unsigned int | bb_index |
The basic block to which this gimple_node belongs. More... | |
std::string | operation |
The operation. More... | |
bool | artificial |
this field is true if the gimple_node was created artificially to handle some specific situations, like for example handling functions returning structs by value or accepting structs by value as parameters More... | |
bool | keep |
when true CSE and Bit Value optimization will not remove from the IR More... | |
Data Fields inherited from srcp | |
std::string | include_name |
include_name is a filename string, this can be the location of a reference, if no definition has been seen. More... | |
unsigned int | line_number |
line_number holds a line number. More... | |
unsigned int | column_number |
column_number holds the column number. More... | |
Data Fields inherited from tree_node | |
const unsigned int | index |
Represent the index read from the raw file and the index-1 of the vector of tree_node associated to the functions vector present in the tree_manager. More... | |
Private Attributes | |
DefEdgeList | list_of_def_edge |
store the list pairs: <def, edge>. More... | |
bool | updated_ssa_uses |
True if SSA uses are updated. More... | |
Friends | |
class | tree_manager |
class | string_cst_fix |
class | parm2ssa |
Additional Inherited Members | |
Static Public Member Functions inherited from tree_node | |
static enum kind | get_kind (const std::string &name) |
Given a string, return the corresponding kind. More... | |
static std::string | GetString (const enum kind k) |
Given a kind, return the corresponding string. More... | |
This struct specifies the gimple_phi node.
SSA PHI operator. PHI_RESULT is the new node created by the PHI node. PHI_ARG_LENGTH is the number of arguments. PHI_ARG_ELT returns the Ith tuple <def, edge> from the argument list. Each tuple contains the incoming reaching definition (SSA_NAME node) and the edge via which that definition is coming through. The tree walker structure of this node is: #(TOK_GIMPLE_PHI res (tuple)*)
Definition at line 3742 of file tree_node.hpp.
using gimple_phi::DefEdge = std::pair<tree_nodeRef, unsigned int> |
The type of the def edge.
Definition at line 3750 of file tree_node.hpp.
using gimple_phi::DefEdgeList = std::list<DefEdge> |
The type of the def edge list.
Definition at line 3753 of file tree_node.hpp.
anonymous enum |
|
explicit |
Constructor.
i | is the index of the node to be created |
Definition at line 982 of file tree_node.cpp.
void gimple_phi::AddDefEdge | ( | const tree_managerRef & | TM, |
const DefEdge & | def_edge | ||
) |
Add a defedge.
TM | is the tree manager |
def_edge | is the def edge to be added |
update_uses | specifies if the uses have to be updated |
Definition at line 998 of file tree_node.cpp.
References gimple_node::bb_index, GET_NODE, tree_manager::GetTreeReindex(), tree_node::index, list_of_def_edge, and updated_ssa_uses.
Referenced by SetDefEdgeList().
const gimple_phi::DefEdgeList & gimple_phi::CGetDefEdgesList | ( | ) | const |
Return the list of def edges.
Definition at line 1011 of file tree_node.cpp.
References list_of_def_edge.
Referenced by GimpleWriter::GimpleWriter(), VcdSignalSelection::InitialPhiResIsAddress(), VcdSignalSelection::SingleStepPropagateAddrSsa(), and raw_writer::write_when_not_null_point_to().
void gimple_phi::RemoveDefEdge | ( | const tree_managerRef & | TM, |
const DefEdge & | to_be_removed | ||
) |
Remove a defedge.
TM | is the tree manager |
def_edge | is the def edge to be removed |
update_uses | specifies if the uses have to be updated |
Definition at line 1056 of file tree_node.cpp.
References gimple_node::bb_index, GET_NODE, tree_manager::GetTreeReindex(), tree_node::index, list_of_def_edge, STR, THROW_ASSERT, tree_node::ToString(), and updated_ssa_uses.
Referenced by SetDefEdgeList().
void gimple_phi::ReplaceDefEdge | ( | const tree_managerRef & | TM, |
const DefEdge & | old_def_edge, | ||
const DefEdge & | new_def_edge | ||
) |
Replace a defedge.
old_def_edge | is the def edge to be removed |
new_def_edge | is the def edge to be added |
update_uses | specifies if the uses have to be updated |
Definition at line 1016 of file tree_node.cpp.
References gimple_node::bb_index, GET_NODE, tree_manager::GetTreeReindex(), tree_node::index, list_of_def_edge, and updated_ssa_uses.
void gimple_phi::SetDefEdgeList | ( | const tree_managerRef & | TM, |
DefEdgeList | new_list_of_def_edge | ||
) |
Set the def edge list removing the ond one.
TM | is the tree manager |
new_def_edge_list | is the new def edge list |
update_uses | specifies if the uses have to be updated |
Definition at line 1044 of file tree_node.cpp.
References AddDefEdge(), list_of_def_edge, and RemoveDefEdge().
void gimple_phi::SetSSAUsesComputed | ( | ) |
Set that uses of ssa have been computed.
Definition at line 1081 of file tree_node.cpp.
References THROW_ASSERT, and updated_ssa_uses.
|
overridevirtual |
Redefinition of get_kind_text.
Redefinition of get_kind. virtual function used to traverse the tree_node data structure.
v | is a reference to the tree_node visitor class |
Reimplemented from gimple_node.
Definition at line 986 of file tree_node.cpp.
References ALL_VISIT, list_of_def_edge, res, VISIT_MEMBER, VISIT_MEMBER_NAMED, and VISIT_SC.
|
friend |
Definition at line 3747 of file tree_node.hpp.
|
friend |
Definition at line 3746 of file tree_node.hpp.
|
friend |
Definition at line 3745 of file tree_node.hpp.
|
private |
store the list pairs: <def, edge>.
Each tuple contains the incoming reaching definition (SSA_NAME node) and the edge via which that definition is coming through.
Definition at line 3759 of file tree_node.hpp.
Referenced by AddDefEdge(), CGetDefEdgesList(), RemoveDefEdge(), ReplaceDefEdge(), SetDefEdgeList(), and visit().
tree_nodeRef gimple_phi::res |
res is the new SSA_NAME node created by the PHI node.
Definition at line 3772 of file tree_node.hpp.
Referenced by GimpleWriter::GimpleWriter(), VcdSignalSelection::InitialPhiResIsAddress(), VcdSignalSelection::SingleStepPropagateAddrSsa(), visit(), and raw_writer::write_when_not_null_point_to().
|
private |
True if SSA uses are updated.
Definition at line 3762 of file tree_node.hpp.
Referenced by AddDefEdge(), RemoveDefEdge(), ReplaceDefEdge(), and SetSSAUsesComputed().
bool gimple_phi::virtual_flag |
flag for virtual phi
Definition at line 3775 of file tree_node.hpp.
Referenced by raw_writer::write_when_not_null_point_to().