![]() |
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().
1.8.13