PandA-2024.02
Public Types | Public Member Functions | Data Fields | Private Attributes | Friends
gimple_phi Struct Reference

This struct specifies the gimple_phi node. More...

#include <tree_node.hpp>

Inheritance diagram for gimple_phi:
Inheritance graph
[legend]
Collaboration diagram for gimple_phi:
Collaboration graph
[legend]

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 DefEdgeListCGetDefEdgesList () 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_nodeRefpragmas
 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...
 

Detailed Description

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.

Member Typedef Documentation

◆ DefEdge

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.

◆ DefEdgeList

using gimple_phi::DefEdgeList = std::list<DefEdge>

The type of the def edge list.

Definition at line 3753 of file tree_node.hpp.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

visitor enum

Enumerator
GETID 
GETID 

Definition at line 3828 of file tree_node.hpp.

Constructor & Destructor Documentation

◆ gimple_phi()

gimple_phi::gimple_phi ( unsigned int  i)
explicit

Constructor.

Parameters
iis the index of the node to be created

Definition at line 982 of file tree_node.cpp.

Member Function Documentation

◆ AddDefEdge()

void gimple_phi::AddDefEdge ( const tree_managerRef TM,
const DefEdge def_edge 
)

Add a defedge.

Parameters
TMis the tree manager
def_edgeis the def edge to be added
update_usesspecifies 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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CGetDefEdgesList()

const gimple_phi::DefEdgeList & gimple_phi::CGetDefEdgesList ( ) const

Return the list of def edges.

Returns
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().

Here is the caller graph for this function:

◆ RemoveDefEdge()

void gimple_phi::RemoveDefEdge ( const tree_managerRef TM,
const DefEdge to_be_removed 
)

Remove a defedge.

Parameters
TMis the tree manager
def_edgeis the def edge to be removed
update_usesspecifies 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().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ReplaceDefEdge()

void gimple_phi::ReplaceDefEdge ( const tree_managerRef TM,
const DefEdge old_def_edge,
const DefEdge new_def_edge 
)

Replace a defedge.

Parameters
old_def_edgeis the def edge to be removed
new_def_edgeis the def edge to be added
update_usesspecifies 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.

Here is the call graph for this function:

◆ SetDefEdgeList()

void gimple_phi::SetDefEdgeList ( const tree_managerRef TM,
DefEdgeList  new_list_of_def_edge 
)

Set the def edge list removing the ond one.

Parameters
TMis the tree manager
new_def_edge_listis the new def edge list
update_usesspecifies if the uses have to be updated

Definition at line 1044 of file tree_node.cpp.

References AddDefEdge(), list_of_def_edge, and RemoveDefEdge().

Here is the call graph for this function:

◆ SetSSAUsesComputed()

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.

◆ visit()

void gimple_phi::visit ( tree_node_visitor *const  v) const
overridevirtual

Redefinition of get_kind_text.

Redefinition of get_kind. virtual function used to traverse the tree_node data structure.

Parameters
vis 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.

Friends And Related Function Documentation

◆ parm2ssa

friend class parm2ssa
friend

Definition at line 3747 of file tree_node.hpp.

◆ string_cst_fix

friend class string_cst_fix
friend

Definition at line 3746 of file tree_node.hpp.

◆ tree_manager

friend class tree_manager
friend

Definition at line 3745 of file tree_node.hpp.

Field Documentation

◆ list_of_def_edge

DefEdgeList gimple_phi::list_of_def_edge
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().

◆ res

tree_nodeRef gimple_phi::res

◆ updated_ssa_uses

bool gimple_phi::updated_ssa_uses
private

True if SSA uses are updated.

Definition at line 3762 of file tree_node.hpp.

Referenced by AddDefEdge(), RemoveDefEdge(), ReplaceDefEdge(), and SetSSAUsesComputed().

◆ virtual_flag

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().


The documentation for this struct was generated from the following files:

Generated on Mon Feb 12 2024 13:03:54 for PandA-2024.02 by doxygen 1.8.13