PandA-2024.02
Public Types | Public Member Functions | Data Fields
var_decl Struct Reference

struct definition of the label_decl tree node. More...

#include <tree_node.hpp>

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

Public Types

enum  { GETID =(decl_node) = 0, GETID =(decl_node) = 0, GETID =(decl_node) = 0, GETID =(decl_node) = 0 }
 visitor enum More...
 
- Public Types inherited from decl_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
}
 visitor enum More...
 

Public Member Functions

 var_decl (unsigned int i)
 constructor More...
 
void visit (tree_node_visitor *const v) const override
 Redefinition of get_kind_text. More...
 
- Public Member Functions inherited from decl_node
 decl_node (unsigned int i)
 Constructor. More...
 
- Public Member Functions inherited from srcp
 srcp ()
 constructor More...
 
virtual ~srcp ()
 Destructor. 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...
 
- Public Member Functions inherited from attr
virtual ~attr ()
 Destructor. More...
 
void add (const TreeVocabularyTokenTypes_TokenEnum a)
 Add an attribute to list of attribute. More...
 
bool is_constructor () const
 Return true if there is TOK_CONSTRUCTOR in the list of attributes. More...
 
bool is_destructor () const
 Return true if there is TOK_DESTRUCTOR in the list of attributes. More...
 
bool is_member () const
 Return true if there is TOK_MEMBER in the list of attributes. More...
 
bool is_call () const
 returns true if there is a TOK_CALL in the list of attributes More...
 
bool is_new () const
 returns true if there is a TOK_NEW in the list of attributes More...
 
bool is_public () const
 returns true if there is a TOK_PUBLIC in the list of attributes More...
 
bool is_private () const
 returns true if there is a TOK_PRIVATE in the list of attributes More...
 
bool is_protected () const
 returns true if there is a TOK_PROTECTED in the list of attributes More...
 
bool is_bitfield () const
 returns true if there is a TOK_BITFIELD in the list of attributes More...
 

Data Fields

int use_tmpl
 use_tmpl indicates whether or not (and how) a template was expanded for this VAR_DECL. More...
 
bool static_static_flag
 to manage C++ code with static member More...
 
bool static_flag
 to manage standard static attribute More...
 
bool extern_flag
 a variable can be extern More...
 
bool addr_taken
 True when we are able to prove that its address is taken and escape from a the function in which is defined. More...
 
bool addr_not_taken
 True when we are able to prove that its address is not taken and do not escape. More...
 
tree_nodeRef init
 init field holds the value to initialize a variable to. More...
 
tree_nodeRef size
 size field holds the size of datum, in bits. More...
 
unsigned int algn
 algn field holds the alignment required for the datum, in bits. More...
 
int used
 used is nonzero if the name is used in its scope (macro TREE_USED) More...
 
bool register_flag
 register_flag means declared 'register' (macro DECL_REGISTER) More...
 
bool readonly_flag
 readonly_flag means readonly parameter (macro TREE_READONLY) More...
 
std::string bit_values
 for each bit of the var_decl tells if it is equal to U,X,0,1 meaningful only in case the variable is readonly More...
 
tree_nodeRef smt_ann
 symbol_memory_tag annotation More...
 
CustomUnorderedSet< tree_nodeRefdefs
 The set of gimple node which writes this variable. More...
 
CustomUnorderedSet< tree_nodeRefuses
 The set of gimple node which read this variable. More...
 
CustomUnorderedSet< tree_nodeRefaddressings
 The set of gimple node which addresses this variable. More...
 
- Data Fields inherited from decl_node
tree_nodeRef name
 name field contains an identifier_node used to represent a name. More...
 
tree_nodeRef mngl
 mngl field contains the name of the object as the assembler will see it. More...
 
tree_nodeRef orig
 For any sort of a ..._DECL node, this points to the original (abstract) decl node which this decl is an instance of, or else it is NULL indicating that this decl is not an instance of some other decl. More...
 
tree_nodeRef type
 type field holds the data type of the object, when relevant. More...
 
tree_nodeRef scpe
 scope declaration More...
 
tree_nodeRef attributes
 
bool artificial_flag
 artificial_flag field is used to indicate that this decl_node represents a compiler-generated entity. More...
 
bool packed_flag
 Indicates this field should be bit-packed. More...
 
bool operating_system_flag
 operating system flag: it's true when this is a variable of operating system library More...
 
bool library_system_flag
 library system flag: it's true when this is a variable of a standard library (e.g libmath) More...
 
bool libbambu_flag
 it is true when this is a declared inside libbambu More...
 
tree_nodeRef chan
 chan field: the decls in one binding context are chained through this field. More...
 
bool C_flag
 is true when the declaration has the C attribute More...
 
unsigned int uid
 The uid. 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...
 
- Data Fields inherited from attr
CustomOrderedSet< TreeVocabularyTokenTypes_TokenEnumlist_attr
 list of TOKEN, represented as int, associated to the tree_node More...
 

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

struct definition of the label_decl tree node.

The tree walker structure of this node is: #(TOK_VAR_DECL decl_node attr (TOK_STATIC TOK_STATIC | TOK_STATIC | TOK_EXTERN)? (init)? (size)? algn used (TOK_REGISTER)?)

Definition at line 5659 of file tree_node.hpp.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

visitor enum

Enumerator
GETID 
GETID 
GETID 
GETID 

Definition at line 5761 of file tree_node.hpp.

Constructor & Destructor Documentation

◆ var_decl()

var_decl::var_decl ( unsigned int  i)
explicit

constructor

Definition at line 1506 of file tree_node.cpp.

Member Function Documentation

◆ visit()

void var_decl::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 attr.

Definition at line 1521 of file tree_node.cpp.

References ALL_VISIT, init, size, smt_ann, VISIT_MEMBER, and VISIT_SC.

Referenced by type_pack_expansion::visit(), expr_pack_expansion::visit(), target_mem_ref::visit(), target_mem_ref461::visit(), type_argument_pack::visit(), nontype_argument_pack::visit(), vector_cst::visit(), and vector_type::visit().

Here is the caller graph for this function:

Field Documentation

◆ addr_not_taken

bool var_decl::addr_not_taken

True when we are able to prove that its address is not taken and do not escape.

It is defined by LLVM/CLANG and it refers mainly to alloca type variables

Definition at line 5690 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ addr_taken

bool var_decl::addr_taken

True when we are able to prove that its address is taken and escape from a the function in which is defined.

Defined by LLVM/CLANG and it refers mainly to alloca type variables

Definition at line 5686 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ addressings

CustomUnorderedSet<tree_nodeRef> var_decl::addressings

The set of gimple node which addresses this variable.

Definition at line 5746 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ algn

unsigned int var_decl::algn

algn field holds the alignment required for the datum, in bits.

(macro DECL_ALIGN)

Definition at line 5710 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ bit_values

std::string var_decl::bit_values

for each bit of the var_decl tells if it is equal to U,X,0,1 meaningful only in case the variable is readonly

Definition at line 5732 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ defs

The set of gimple node which writes this variable.

Definition at line 5740 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ extern_flag

bool var_decl::extern_flag

a variable can be extern

Definition at line 5681 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ init

tree_nodeRef var_decl::init

init field holds the value to initialize a variable to.

(macro DECL_INITIAL)

Definition at line 5698 of file tree_node.hpp.

Referenced by visit(), and raw_writer::write_when_not_null_point_to().

◆ readonly_flag

bool var_decl::readonly_flag

readonly_flag means readonly parameter (macro TREE_READONLY)

Definition at line 5728 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ register_flag

bool var_decl::register_flag

register_flag means declared 'register' (macro DECL_REGISTER)

Definition at line 5722 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ size

tree_nodeRef var_decl::size

size field holds the size of datum, in bits.

(macro DECL_SIZE)

Definition at line 5704 of file tree_node.hpp.

Referenced by visit(), and raw_writer::write_when_not_null_point_to().

◆ smt_ann

tree_nodeRef var_decl::smt_ann

symbol_memory_tag annotation

Definition at line 5737 of file tree_node.hpp.

Referenced by visit(), and raw_writer::write_when_not_null_point_to().

◆ static_flag

bool var_decl::static_flag

to manage standard static attribute

Definition at line 5678 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ static_static_flag

bool var_decl::static_static_flag

to manage C++ code with static member

Definition at line 5675 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ use_tmpl

int var_decl::use_tmpl

use_tmpl indicates whether or not (and how) a template was expanded for this VAR_DECL.

0=normal declaration, e.g. int min (int, int); 1=implicit template instantiation 2=explicit template specialization, e.g. int min<int> (int, int); 3=explicit template instantiation, e.g. template int min<int> (int, int);

Definition at line 5672 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ used

int var_decl::used

used is nonzero if the name is used in its scope (macro TREE_USED)

Definition at line 5716 of file tree_node.hpp.

Referenced by raw_writer::write_when_not_null_point_to().

◆ uses

The set of gimple node which read this variable.

Definition at line 5743 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:04:09 for PandA-2024.02 by doxygen 1.8.13