64 #define WRITE_NFIELD_STRING(os, field_name, field_value) os << " " << (field_name) << ": \"" << (field_value) << "\"" 69 #define WRITE_NFIELD(os, name, field) os << " " << (name) << ": " << field 74 #define WRITE_UFIELD(os, field) os << " " << field 79 #define WRITE_UFIELD_STRING(os, field) os << " \"" << (field) << "\"" 84 #define WRITE_STRGLNGT_IDENTIFIER(os, field) \ 86 << "strg: \"" << (field) << "\" lngt: " << (field).size() 91 #define WRITE_STRGLNGT_STRING(os, field) \ 93 << "strg: \"" << (field) << "\" lngt: " << (field).size() + 1) 98 #define WRITE_SRCP(os, include_name, line_number, column_number) \ 100 << "srcp: \"" << (include_name) << "\":" << (line_number) << ":" << column_number 118 os <<
" " << str <<
":";
127 os <<
" " << type <<
" : \"anything\"";
131 os <<
" " << type <<
" : \"escaped\"";
135 os <<
" " << type <<
" : \"ipa_escaped\"";
139 os <<
" " << type <<
" : \"nonlocal\"";
143 os <<
" " << type <<
" : \"null\"";
145 const std::vector<tree_nodeRef>& variables = solution->
variables;
146 std::vector<tree_nodeRef>::const_iterator variable, variable_end = variables.end();
147 for(variable = variables.begin(); variable != variable_end; ++variable)
153 void raw_writer::operator()(
const tree_node* obj,
unsigned int&)
158 void raw_writer::operator()(
const WeightedNode* obj,
unsigned int& mask)
161 obj->tree_node::visit(
this);
168 void raw_writer::operator()(
const tree_reindex* obj,
unsigned int&)
173 void raw_writer::operator()(
const attr* obj,
unsigned int& mask)
182 void raw_writer::operator()(
const srcp* obj,
unsigned int& mask)
191 void raw_writer::operator()(
const decl_node* obj,
unsigned int& mask)
194 obj->tree_node::visit(
this);
200 obj->srcp::visit(
this);
229 void raw_writer::operator()(
const expr_node* obj,
unsigned int& mask)
232 obj->WeightedNode::visit(
this);
234 obj->srcp::visit(
this);
237 void raw_writer::operator()(
const gimple_node* obj,
unsigned int& mask)
240 obj->WeightedNode::visit(
this);
247 for(
const auto& vuse : obj->
vuses)
253 for(
const auto& vover : obj->
vovers)
257 obj->srcp::visit(
this);
258 auto vend2 = obj->
pragmas.end();
259 for(
auto i = obj->
pragmas.begin(); i != vend2; ++i)
265 void raw_writer::operator()(
const unary_expr* obj,
unsigned int& mask)
268 obj->expr_node::visit(
this);
272 void raw_writer::operator()(
const binary_expr* obj,
unsigned int& mask)
275 obj->expr_node::visit(
this);
280 void raw_writer::operator()(
const ternary_expr* obj,
unsigned int& mask)
283 obj->expr_node::visit(
this);
289 void raw_writer::operator()(
const quaternary_expr* obj,
unsigned int& mask)
292 obj->expr_node::visit(
this);
299 void raw_writer::operator()(
const type_node* obj,
unsigned int& mask)
302 obj->tree_node::visit(
this);
329 void raw_writer::operator()(
const memory_tag* obj,
unsigned int& mask)
332 obj->decl_node::visit(
this);
340 void raw_writer::operator()(
const cst_node* obj,
unsigned int& mask)
343 obj->tree_node::visit(
this);
347 void raw_writer::operator()(
const error_mark* obj,
unsigned int& mask)
350 obj->tree_node::visit(
this);
353 void raw_writer::operator()(
const array_type* obj,
unsigned int& mask)
356 obj->type_node::visit(
this);
361 void raw_writer::operator()(
const gimple_asm* obj,
unsigned int& mask)
364 obj->gimple_node::visit(
this);
375 void raw_writer::operator()(
const baselink* obj,
unsigned int& mask)
378 obj->tree_node::visit(
this);
382 void raw_writer::operator()(
const gimple_bind* obj,
unsigned int& mask)
385 obj->expr_node::visit(
this);
394 void raw_writer::operator()(
const binfo* obj,
unsigned int& mask)
397 obj->tree_node::visit(
this);
412 void raw_writer::operator()(
const block* obj,
unsigned int& mask)
415 obj->tree_node::visit(
this);
422 void raw_writer::operator()(
const call_expr* obj,
unsigned int& mask)
425 obj->expr_node::visit(
this);
427 std::vector<tree_nodeRef>::const_iterator
arg, arg_end = obj->
args.end();
428 for(arg = obj->
args.begin(); arg != arg_end; ++
arg)
434 void raw_writer::operator()(
const aggr_init_expr* obj,
unsigned int& mask)
437 obj->call_expr::visit(
this);
442 void raw_writer::operator()(
const gimple_call* obj,
unsigned int& mask)
445 obj->gimple_node::visit(
this);
447 std::vector<tree_nodeRef>::const_iterator
arg, arg_end = obj->
args.end();
448 for(arg = obj->
args.begin(); arg != arg_end; ++
arg)
456 void raw_writer::operator()(
const case_label_expr* obj,
unsigned int& mask)
459 obj->expr_node::visit(
this);
469 void raw_writer::operator()(
const cast_expr* obj,
unsigned int& mask)
472 obj->expr_node::visit(
this);
476 void raw_writer::operator()(
const complex_cst* obj,
unsigned int& mask)
479 obj->cst_node::visit(
this);
484 void raw_writer::operator()(
const complex_type* obj,
unsigned int& mask)
487 obj->type_node::visit(
this);
498 void raw_writer::operator()(
const gimple_cond* obj,
unsigned int& mask)
501 obj->gimple_node::visit(
this);
505 void raw_writer::operator()(
const const_decl* obj,
unsigned int& mask)
508 obj->decl_node::visit(
this);
512 void raw_writer::operator()(
const constructor* obj,
unsigned int& mask)
515 obj->tree_node::visit(
this);
525 void raw_writer::operator()(
const enumeral_type* obj,
unsigned int& mask)
528 obj->type_node::visit(
this);
542 void raw_writer::operator()(
const expr_stmt* obj,
unsigned int& mask)
545 obj->tree_node::visit(
this);
554 void raw_writer::operator()(
const field_decl* obj,
unsigned int& mask)
557 obj->decl_node::visit(
this);
558 obj->attr::visit(
this);
573 void raw_writer::operator()(
const function_decl* obj,
unsigned int& mask)
576 obj->decl_node::visit(
this);
586 obj->attr::visit(
this);
600 for(
auto i = obj->
list_of_args.begin(); i != vend2; ++i)
645 #if HAVE_FROM_PRAGMA_BUILT 650 if(obj->omp_for_wrapper)
654 if(obj->omp_body_loop)
658 if(!obj->omp_critical.empty())
667 void raw_writer::operator()(
const function_type* obj,
unsigned int& mask)
670 obj->type_node::visit(
this);
679 void raw_writer::operator()(
const gimple_assign* obj,
unsigned int& mask)
682 obj->gimple_node::visit(
this);
702 void raw_writer::operator()(
const gimple_goto* obj,
unsigned int& mask)
705 obj->gimple_node::visit(
this);
709 void raw_writer::operator()(
const handler* obj,
unsigned int& mask)
712 obj->tree_node::visit(
this);
720 void raw_writer::operator()(
const identifier_node* obj,
unsigned int& mask)
723 obj->tree_node::visit(
this);
734 void raw_writer::operator()(
const integer_cst* obj,
unsigned int& mask)
737 obj->cst_node::visit(
this);
741 void raw_writer::operator()(
const integer_type* obj,
unsigned int& mask)
744 obj->type_node::visit(
this);
749 if(!obj->
str.empty())
761 void raw_writer::operator()(
const gimple_label* obj,
unsigned int& mask)
764 obj->gimple_node::visit(
this);
768 void raw_writer::operator()(
const method_type* obj,
unsigned int& mask)
771 obj->function_type::visit(
this);
775 void raw_writer::operator()(
const namespace_decl* obj,
unsigned int& mask)
778 obj->decl_node::visit(
this);
782 void raw_writer::operator()(
const overload* obj,
unsigned int& mask)
785 obj->tree_node::visit(
this);
790 void raw_writer::operator()(
const parm_decl* obj,
unsigned int& mask)
793 obj->decl_node::visit(
this);
816 void raw_writer::operator()(
const gimple_phi* obj,
unsigned int& mask)
819 obj->gimple_node::visit(
this);
832 void raw_writer::operator()(
const pointer_type* obj,
unsigned int& mask)
835 obj->type_node::visit(
this);
839 void raw_writer::operator()(
const real_cst* obj,
unsigned int& mask)
842 obj->cst_node::visit(
this);
847 if(!obj->
valr.empty())
851 if(!obj->
valx.empty())
857 void raw_writer::operator()(
const real_type* obj,
unsigned int& mask)
860 obj->type_node::visit(
this);
864 void raw_writer::operator()(
const record_type* obj,
unsigned int& mask)
867 obj->type_node::visit(
this);
888 for(
auto i = obj->
list_of_flds.begin(); i != vend1; ++i)
893 for(
auto i = obj->
list_of_fncs.begin(); i != vend2; ++i)
900 void raw_writer::operator()(
const reference_type* obj,
unsigned int& mask)
903 obj->type_node::visit(
this);
907 void raw_writer::operator()(
const result_decl* obj,
unsigned int& mask)
910 obj->decl_node::visit(
this);
924 void raw_writer::operator()(
const gimple_return* obj,
unsigned int& mask)
927 obj->gimple_node::visit(
this);
931 void raw_writer::operator()(
const return_stmt* obj,
unsigned int& mask)
934 obj->tree_node::visit(
this);
942 void raw_writer::operator()(
const scope_ref* obj,
unsigned int& mask)
945 obj->expr_node::visit(
this);
950 void raw_writer::operator()(
const ssa_name* obj,
unsigned int& mask)
953 obj->tree_node::visit(
this);
999 void raw_writer::operator()(
const statement_list* obj,
unsigned int& mask)
1002 obj->tree_node::visit(
this);
1004 for(
auto i = obj->
list_of_stmt.begin(); i != vend; ++i)
1009 for(
auto i = obj->
list_of_bloc.begin(); i != mend; ++i)
1015 void raw_writer::operator()(
const string_cst* obj,
unsigned int& mask)
1018 obj->cst_node::visit(
this);
1022 void raw_writer::operator()(
const gimple_switch* obj,
unsigned int& mask)
1025 obj->gimple_node::visit(
this);
1030 void raw_writer::operator()(
const target_expr* obj,
unsigned int& mask)
1033 obj->expr_node::visit(
this);
1039 void raw_writer::operator()(
const lut_expr* obj,
unsigned int& mask)
1042 obj->expr_node::visit(
this);
1054 void raw_writer::operator()(
const template_decl* obj,
unsigned int& mask)
1057 obj->decl_node::visit(
this);
1067 obj->tree_node::visit(
this);
1083 void raw_writer::operator()(
const tree_list* obj,
unsigned int& mask)
1086 obj->tree_node::visit(
this);
1092 void raw_writer::operator()(
const tree_vec* obj,
unsigned int& mask)
1095 obj->tree_node::visit(
this);
1101 for(
auto i = obj->
list_of_op.begin(); i != vend; ++i)
1107 void raw_writer::operator()(
const try_block* obj,
unsigned int& mask)
1110 obj->tree_node::visit(
this);
1120 void raw_writer::operator()(
const type_decl* obj,
unsigned int& mask)
1123 obj->decl_node::visit(
this);
1128 void raw_writer::operator()(
const union_type* obj,
unsigned int& mask)
1131 obj->type_node::visit(
this);
1134 for(
auto i = obj->
list_of_flds.begin(); i != vend1; ++i)
1139 for(
auto i = obj->
list_of_fncs.begin(); i != vend2; ++i)
1146 void raw_writer::operator()(
const var_decl* obj,
unsigned int& mask)
1149 obj->decl_node::visit(
this);
1155 obj->attr::visit(
this);
1194 var_end = obj->
defs.end();
1195 for(var = obj->
defs.begin(); var != var_end; ++var)
1199 var_end = obj->
uses.end();
1200 for(var = obj->
uses.begin(); var != var_end; ++var)
1205 for(var = obj->
addressings.begin(); var != var_end; ++var)
1219 void raw_writer::operator()(
const vector_cst* obj,
unsigned int& mask)
1222 obj->cst_node::visit(
this);
1224 for(
auto i = obj->
list_of_valu.begin(); i != vend; ++i)
1233 obj->type_node::visit(
this);
1240 obj->expr_node::visit(
this);
1247 obj->type_node::visit(
this);
1256 obj->expr_node::visit(
this);
1262 void raw_writer::operator()(
const vector_type* obj,
unsigned int& mask)
1265 obj->type_node::visit(
this);
1269 void raw_writer::operator()(
const target_mem_ref* obj,
unsigned int& mask)
1272 obj->WeightedNode::visit(
this);
1286 obj->WeightedNode::visit(
this);
1295 void raw_writer::operator()(
const bloc* obj,
unsigned int& mask)
1305 for(
auto i = obj->
list_of_pred.begin(); i != vend1; ++i)
1317 for(
auto i = obj->
list_of_succ.begin(); i != vend2; ++i)
1346 void raw_writer::operator()(
const gimple_while* obj,
unsigned int& mask)
1349 obj->gimple_node::visit(
this);
1353 void raw_writer::operator()(
const gimple_for* obj,
unsigned int& mask)
1356 obj->gimple_while::visit(
this);
1364 obj->gimple_node::visit(
this);
1372 void raw_writer::operator()(
const null_node* obj,
unsigned int& mask)
1375 obj->tree_node::visit(
this);
1378 void raw_writer::operator()(
const gimple_pragma* obj,
unsigned int& mask)
1381 obj->gimple_node::visit(
this);
1389 void raw_writer::operator()(
const omp_pragma* obj,
unsigned int& mask)
1392 obj->tree_node::visit(
this);
1398 obj->omp_pragma::visit(
this);
1405 obj->omp_pragma::visit(
this);
1412 obj->omp_pragma::visit(
this);
1420 obj->omp_pragma::visit(
this);
1423 void raw_writer::operator()(
const omp_for_pragma* obj,
unsigned int& mask)
1426 obj->omp_pragma::visit(
this);
1429 void raw_writer::operator()(
const omp_simd_pragma* obj,
unsigned int& mask)
1432 obj->omp_pragma::visit(
this);
1438 obj->omp_pragma::visit(
this);
1444 obj->omp_pragma::visit(
this);
1450 obj->omp_pragma::visit(
this);
1453 void raw_writer::operator()(
const omp_task_pragma* obj,
unsigned int& mask)
1456 obj->omp_pragma::visit(
this);
1459 void raw_writer::operator()(
const map_pragma* obj,
unsigned int& mask)
1462 obj->tree_node::visit(
this);
1465 void raw_writer::operator()(
const call_hw_pragma* obj,
unsigned int& mask)
1468 obj->tree_node::visit(
this);
1476 obj->tree_node::visit(
this);
1482 void raw_writer::operator()(
const issue_pragma* obj,
unsigned int& mask)
1485 obj->tree_node::visit(
this);
1488 void raw_writer::operator()(
const blackbox_pragma* obj,
unsigned int& mask)
1491 obj->issue_pragma::visit(
this);
1494 void raw_writer::operator()(
const profiling_pragma* obj,
unsigned int& mask)
1497 obj->tree_node::visit(
this);
1503 obj->profiling_pragma::visit(
this);
struct definition of the type_decl tree node.
bool static_static_flag
to manage C++ code with static member
tree_nodeRef ptd
ptd field points to the node for the type pointed to.
This struct specifies the integer_cst node.
bool libbambu_flag
it is true when this is a declared inside libbambu
const TreeNodeSet CGetDefStmts() const
Return the set of definition statements.
tree_nodeRef in
in is the operand 2: ASM_INPUTS, this represents the inputs for the statement.
struct definition of the const_decl tree node.
This struct implements the target_expr node.
integer_cst_t value
The value of the integer cast.
bool default_flag
default_flag is true if the label is a 'default' label
int line
line is the line number where the compound_stmt is defined.
tree_nodeRef min
min: tree-dump.c use the macro TYPE_MIN_VALUE
tree_nodeRef init
init field holds the value to initialize a variable to.
tree_nodeRef op2
second operand
const TreeNodeMap< size_t > & CGetUseStmts() const
Return the use stmts.
const DefEdgeList & CGetDefEdgesList() const
Return the list of def edges.
bool operating_system_flag
operating system flag: it's true when this is a variable of operating system library ...
tree_nodeRef size
size field holds the size of datum, in bits.
int used
used is nonzero if the name is used in its scope (macro TREE_USED)
This struct specifies the field bloc (basic block).
void write_when_not_null_point_to(const std::string &type, const PointToSolutionRef &solution) const
Write a point to solution when is not null.
unsigned int prec
prec field is the number of bits used by this type (macro TYPE_PRECISION)
std::vector< tree_nodeRef > list_of_fncs
list_of_fncs is a chain of methods_decl for the fields of the struct.
struct definition of the vector_type tree node.
unsigned int algn
algn field holds the alignment required for the datum, in bits.
struct definition of the array_type tree node.
tree_nodeRef max
max: tree-dump.c use the macro TYPE_MAX_VALUE
tree_nodeRef unql
unql field, in any member of such a chain, points to the start of the chain.
tree_nodeRef tmpl_parms
tmpl_parms holds template parameters It is a TREE_LIST, his VALU field is a TREE_VEC whose LIST_OF_OP...
struct definition of the real_type tree node.
#define STOK(token)
Macro used to convert a token symbol into the corresponding string.
const unsigned int number
number is the index of the basic block.
tree_nodeRef name
name field contains info on the name used in the program for this type.It is either a TYPE_DECL node...
tree_nodeRef type
is the type of the baselink
bool anything
True if it is not possible to determine where the pointer points to.
bool recursive
True if this mapping pragma has to be considered recursive.
bool virtual_flag
flag for virtual phi
bool writing_memory
True if function write in memory somehow.
tree_nodeRef next
Is the next statement.
#define WRITE_NFIELD_STRING(os, field_name, field_value)
Macro which writes on an output stream a named field of string type.
tree_nodeRef bfld
binf field are information about this type, as a base type for itself.
unsigned int algn
algn field holds the alignment required for the datum, in bits.
tree_nodeRef op1
The second operand of the binary expression.
Any erroneous construct is parsed into a node of this type.
bool volatile_flag
volatile_flag is true if the node is public: it means that the name is accessible from outside...
std::string str
FIXME: add the meaning of this field.
This struct specifies the statement_list node.
std::string valr
valr is the real value
tree_nodeRef name
name field contains an identifier_node used to represent a name.
bool packed_flag
Indicated that objects of this type should be laid out in as compact a way as possible.
#define WRITE_TOKEN2(os, token)
Second version of WRITE_TOKEN.
tree_nodeRef elts
field elts is the type of an vector element (tree-dump.c use the macro TREE_TYPE) ...
tree_nodeRef idx
INDEX register.
std::vector< std::pair< tree_nodeRef, tree_nodeRef > > list_of_idx_valu
store the list initializers: <index, value>
A HANDLER wraps a catch handler for the HANDLER_TYPE.
unsigned int column_number
column_number holds the column number.
tree_nodeRef param_packs
PACK_EXPANSION_PARAMETER_PACKS.
tree_nodeRef op
op is casted node
unsigned int line_number
line_number holds a line number.
struct definition of the source position.
std::vector< unsigned int > list_of_succ
list_of_succ is the list of successors.
tree_nodeRef type
type of the expression
tree_nodeRef orig
For any sort of a ..._DECL node, this points to the original (abstract) decl node which this decl is ...
Represents an argument pack of types (or templates).
tree_nodeRef op1
first operand
bool is_shortcut
flag to check if this pragma is shortcut with a OpenMP sections pragma
struct definition of the function_decl tree node.
tree_nodeRef size
size field contains a tree that is an expression for the size in bits.
struct definition of the method_type tree node.
tree_nodeRef decl
it is the target of an initialization
std::vector< tree_nodeRef > list_of_flds
list_of_flds is a chain of field_decl for the fields of the struct, and var_decl, type_decl and const...
tree_nodeRef var
var is the variable being referenced (macro SSA_NAME_VAR).
tree_nodeRef arg
PACK_EXPANSION_EXTRA_ARGS.
TreeVocabularyTokenTypes_TokenEnum qual
qual is the set of type qualifiers for this type.
bool is_shortcut
flag to check if this pragma is shortcut with a OpenMP parallel pragma
std::list< tree_nodeRef > list_of_stmt
list_of_stmt field is the list of statements. If this field is null then the list_of_bloc field is no...
tree_nodeRef refd
refd field references to the node for the type referenced to.
tree_nodeRef imag
imag is the TREE_IMAGPART which content is other constant node.
bool undefined_flag
undefined_flag means external reference: do not allocate storage, and refer to a definition elsewhere...
tree_nodeRef prms
prms field is a list of types of arguments expected, this list is made of tree_list nodes...
tree_nodeRef mngl
mngl field contains the name of the object as the assembler will see it.
This struct specifies the gimple_label node.
tree_nodeRef size
size field holds the size of datum, in bits.
This struct specifies the string_cst node.
exceptions managed by PandA
tree_nodeRef op4
fourth operand
tree_nodeRef op2
The third operand of the ternary expression.
tree_nodeRef crnt
Is the current function declaration.
tree_nodeRef op1
The second operand of the Quaternary expression.
struct definition of the union_type tree node.
std::vector< tree_nodeRef > list_of_valu
list_of_valu is a list of value of the TREE_VECTOR_CST_ELTS vector elements.
A simple interface to token object of the raw files.
void write_when_not_null_bloc(const std::string &str, const blocRef &t)
Write the field when t is not null.
tree_nodeRef fn
fn field is the initial declaration for this function declaration
struct definition of the unary node structures.
bool system_flag
system flag: it's true when this is a system variable
tree_nodeRef type
type field is the type of the node
tree_nodeRef smt_ann
symbol_memory_tag annotation
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 ...
struct definition of the record_type tree node.
tree_nodeRef op6
sixth operand
tree_nodeRef op0
The first operand of the binary expression.
tree_nodeRef size
size field holds the size of datum, in bits.
GIMPLE_BIND <VARS, BLOCK, BODY> represents a lexical scope.
tree_nodeRef scpe
The function to which this gimple_node belongs.
std::map< unsigned int, blocRef > list_of_bloc
list_of_bloc field is the list of basic block. If this field is null then the list_of_stmt field is n...
static const unsigned int EXIT_BLOCK_ID
constant identifying the exit basic block
unsigned int prec
prec field is the number of bits used by this type (tree-dump.c use the macro TYPE_PRECISION) ...
std::string ID_implementation
The identifier of the implementation.
tree_nodeRef base
BASE register.
tree_nodeRef op
PACK_EXPANSION_PATTERN.
#define GET_INDEX_NODE(t)
Macro used to hide implementation details when accessing a tree_node from another tree_node...
tree_nodeRef op1
The second operand of the binary expression.
struct definition of the ternary node structures.
bool ptrmem_flag
true when ptrmem obj is considered
tree_nodeRef tmpl_args
tmpl_args holds template instantiations It is a TREE_VEC whose LIST_OF_OP holds template instantiatio...
This struct specifies the gimple_cond node.
tree_nodeRef clas
clas field is the type of "self".
#define WRITE_UFIELD_STRING(os, field)
Macro which writes on an output stream an unnamed field.
struct definition of the function_type tree node.
std::string valx
valx field
unsigned int algn
algn field holds the alignment required for the datum, in bits.
const std::list< tree_nodeRef > & CGetPhiList() const
Return the list of phi.
tree_nodeRef op7
seventh operand
tree_nodeRef op1
op1 is the operand 1 (macro CASE_HIGH) of the case label expression
std::vector< tree_nodeRef > args
The arguments of the gimple_call.
raw_writer(std::ostream &_os)
default constructor
std::string str
str is the operand 0: ASM_STRING. ASM_STRING returns a STRING_CST for the instruction (e...
tree_nodeRef argt
argt field is the type in which the argument is actually passed, which may be different from its type...
struct definition of the parm_decl tree node.
Data structure describing a basic block at tree level.
This class is used to perform the re-index of all tree nodes.
int line
line is the line number where the compound_stmt is defined.
tree_nodeRef chan
chan field: the decls in one binding context are chained through this field.
AGGR_INIT_EXPRs have a variably-sized representation similar to that of CALL_EXPRs.
Constructor: return an aggregate value made from specified components.
tree_nodeRef bpos
bpos field is the field position, counting in bytes, of the byte containing the bit closest to the be...
This struct specifies the binfo node.
struct definition of the template_decl tree node.
redefinition of map to manage ordered/unordered structures
This struct represents a try-block statement.
bool varargs_flag
varargs flag: tells if function is of varargs type
CustomOrderedSet< TreeVocabularyTokenTypes_TokenEnum > list_attr
list of TOKEN, represented as int, associated to the tree_node
tree_nodeRef binf
type context
bool real_flag
true when the complex base type is a float (macro COMPLEX_FLOAT_TYPE_P)
std::string include_name
include_name is a filename string, this can be the location of a reference, if no definition has been...
tree_nodeRef init
init field holds the value to initialize a variable to.
tree_nodeRef domn
field domn is the type to index by (tree-dump.c use the macro TYPE_DOMAIN).
tree_nodeRef spcs
prms field holds the specialization parameters vector.
Abstract pure class for the tree structure.
std::ostream & os
tree_node visitors
tree_nodeRef arg
arguments stored in the argument pack
tree_nodeRef res
res is the new SSA_NAME node created by the PHI node.
bool builtin_flag
flag true when the function is a builtin
struct definition of the label_decl tree node.
struct definition of the label_decl tree node.
std::vector< tree_nodeRef > args
The arguments of the call_expr.
tree_nodeRef op3
The fourth operand of the Quaternary expression.
Directive represinting mapping of a software function on a component.
struct definition of the result_decl tree node.
This struct specifies the vector_cst node.
const std::string TI_getTokenName(const TreeVocabularyTokenTypes_TokenEnum i)
Return the name associated with the token.
std::string HW_component
The name of the component.
tree_nodeRef scpe
context/scope of the type object.
tree_nodeRef memuse
whole memory operand use
TreeNodeSet vovers
vovers of this statement
virtual std::string get_kind_text() const =0
Virtual function returning the name of the actual class.
This struct specifies the gimple_phi node.
unsigned int loop_id
loop identifier coming from GCC
bool volatile_flag
in case a ssa_name is never defined this Boolean member is true
bool ipa_escaped
True if the points to includes the IPA escaped solution.
This struct represents a list-like node for chaining overloading candidates.
bool artificial_flag
artificial_flag field is used to indicate that this decl_node represents a compiler-generated entity...
struct definition of the Quaternary node structures.
int use_tmpl
use_tmpl indicates whether or not (and how) a template was expanded for this VAR_DECL.
const std::list< tree_nodeRef > & CGetStmtList() const
Return the list of stmt.
bool unsigned_flag
unsigned means an unsigned type (macro TYPE_UNSIGNED)
tree_nodeRef init
it is the initializer for the target
bool fixd_flag
flags used to know if fixd is set
tree_nodeRef body
is the body of the handler
unsigned int bb_index
The basic block to which this gimple_node belongs.
bool unsigned_flag
unsigned means an unsigned type (tree-dump.c use the macro TYPE_UNSIGNED)
This struct specifies the gimple_assign node (GCC 4.3 tree node).
tree_nodeRef type
type field is the actual data type node being inherited in this basetype.(BINFO_TYPE) ...
tree_nodeRef tmpl_parms
tmpl_parms holds template parameters It is a TREE_LIST, his VALU field is a TREE_VEC whose LIST_OF_OP...
std::vector< tree_nodeRef > list_of_aliases
list of aliases associated with the memory tag.
bool libbambu_flag
it is true when this is a declared inside libbambu
CustomUnorderedSet< tree_nodeRef > addressings
The set of gimple node which addresses this variable.
bool library_system_flag
library system flag: it's true when this is a variable of a standard library (e.g libmath) ...
bool register_flag
register_flag means declared 'register' (macro DECL_REGISTER)
bool is_block
attribute for pragma: true when the pragma refers to a block
This struct specifies super class for constant nodes.
tree_nodeRef tmpl_parms
tmpl_parms holds template parameters It is a TREE_LIST, his VALU field is a TREE_VEC whose LIST_OF_OP...
Directive represinting mapping of a function call on a component.
bool escaped
True if the points to includes the local escaped solution.
std::vector< std::pair< TreeVocabularyTokenTypes_TokenEnum, tree_nodeRef > > list_of_access_binf
is the list of pair access binf: baseinfo vector.
bool C_flag
is true when the declaration has the C attribute
std::string HW_component
The name of the component.
tree_nodeRef tmpl_args
tmpl_args holds template instantiations It is a TREE_VEC whose LIST_OF_OP holds template instantiatio...
unsigned int hpl
store the relation between the phi defs inserted in the live_out set and phi uses ...
tree_nodeRef max
max: tree-dump.c use the macro TYPE_MAX_VALUE
Low-level memory addressing.
bool reverse_restrict_flag
True if parameters are not alias after its invocation.
This struct specifies the gimple_return node.
tree_nodeRef body
body field is the saved representation of the body of the entire function.
bool readonly_flag
readonly_flag means read-onlyy parameter (macro TREE_READONLY)
tree_nodeRef idx
INDEX register.
tree_nodeRef expr
Is the expression of the statement.
bool simple_pipeline
True if the pipeline does not contain any unbounded operation.
redefinition of set to manage ordered/unordered structures
tree_nodeRef prms
prms field holds the template parameters vector.
bool addr_taken
True when we are able to prove that its address is taken and escape from a the function in which is d...
bool is_opening
attribute for pragma: true when the pragma refers to an opening pragma
std::string line
this is the string-based form of the pragma
tree_nodeRef out
out is the operand 1: ASM_OUTPUTS, this represents the outputs for the statement. ...
Represents an expression that will be expanded into a list of expressions when instantiated with one ...
#define WRITE_TOKEN(os, token)
Macro which writes on an output stream a token.
tree_nodeRef slot
slot is the slot which was allocated for this expression
This struct represents a reference to a member function or member functions from a base class...
std::list< std::pair< tree_nodeRef, unsigned int > > list_of_cond
The list of pair condition basic block.
bool default_flag
Nonzero if this SSA_NAME is the default definition for the underlying symbol.
bool register_flag
register_flag means declared 'register' (macro DECL_REGISTER)
struct definition of the function_decl tree node.
tree_nodeRef op3
third operand
tree_nodeRef chan
purp is the TREE_CHAIN field: tree_list nodes are made into lists by chaining through the TREE_CHAIN ...
tree_nodeRef param_packs
PACK_EXPANSION_PARAMETER_PACKS.
tree_nodeRef base
BASE register.
tree_nodeRef fn
fn is the operand 0 of the call expression: this is the function
tree_nodeRef retn
retn field is the type of value returned.
struct definition of the field_decl tree node.
tree_nodeRef step
STEP integer constant.
bool reading_memory
True if function read from memory somehow.
tree_nodeRef op0
the branch var
struct definition of the complex_type tree node.
tree_nodeRef predicate
The predicate.
tree_nodeRef arg
PACK_EXPANSION_EXTRA_ARGS.
std::vector< tree_nodeRef > list_of_vars
vars is the operand 0 (GIMPLE_BIND_VARS), this is a chain of VAR_DECL nodes for the variables...
Classes specification of the tree_node data structures.
void write_when_not_null(const std::string &str, const tree_nodeRef &t) const
Write the field when t is not null.
GIMPLE_SWITCH <INDEX, DEFAULT_LAB, LAB1, ..., LABN> represents the multiway branch: ...
bool virt_flag
virt_flag is true if the node is a virtual declaration (macro TREE_VIA_VIRTUAL)
CustomUnorderedSet< tree_nodeRef > uses
The set of gimple node which read this variable.
tree_nodeRef cls
If pointer mem struct type.
tree_nodeRef op0
The first operand of the ternary expression.
struct definition of the field attr on function_decl, field_decl, var_decl tree node.
#define THROW_ERROR(str_expr)
helper function used to throw an error in a standard way
bool static_flag
static_flag is true if function has been defined (macro TREE_STATIC)
tree_nodeRef smt_ann
symbol_memory_tag annotation
tree_nodeRef offset
OFFSET integer constant.
tree_nodeRef memdef
whole memory operand def
struct definition of the pointer_type tree node.
tree_nodeRef got
got field is the operand 2 (macro CASE_LABEL) of the case label expression
unsigned int algn
algn field is the alignment necessary for objects of this type.
tree_nodeRef binf
binf field are information about this type, as a base type for itself.
std::vector< tree_nodeRef > list_of_fncs
list_of_fncs is a chain of methods_decl for the fields of the struct.
PointToSolutionRef use_set
point to solution
tree_nodeRef op0
true table constant
tree_nodeRef tag
result of the tree level alias analysis
tree_nodeRef orig
original memory access
tree_nodeRef op0
The parallel part (the tree_node is a omp_parallel_pragma one)
This struct specifies the block node.
tree_nodeRef op0
The first operand of the binary expression.
tree_nodeRef dcls
declarations
std::vector< tree_nodeRef > list_of_args
args field holds a chain of parm_decl nodes for the arguments.
int line
line is the line number where the compound_stmt is defined.
struct definition of common part of WeightedNode (gimple_assign, expr_node)
tree_nodeRef min
min: tree-dump.c use the macro TYPE_MIN_VALUE
struct definition of the reference_type tree node.
This struct specifies the cast_expr node.
tree_nodeRef hdlr
Is the handler of the statement.
bool operator_flag
it is true when the function_decl is an operator
bool overflow_flag
overflow_flag means there was an overflow in folding, and no warning has been issued for this subexpr...
tree_nodeRef tmpl_args
tmpl_args holds template instantiations It is a TREE_VEC whose LIST_OF_OP holds template instantiatio...
bool readonly_flag
readonly_flag means readonly parameter (macro TREE_READONLY)
int initiation_time
Used for pipelined with unbounded operations.
std::string bl
May contain the string "block".
struct definition of the common part of an expression
tree_nodeRef type
type of the expression
std::vector< tree_nodeRef > list_of_flds
list_of_flds is a chain of field_decl for the fields of the struct, and var_decl, type_decl and const...
tree_nodeRef cnst
field cnst holds the value of a constant (tree-dump.c use the macro DECL_INITIAL) ...
int fixd
Is the result of THUNK_FIXED_OFFSET(t) for this tree node.
bool virtual_flag
flag for virtual SSA
unsigned int vers
vers is the SSA version number of this SSA name.
bool nonlocal
True if the points to includes any global memory.
tree_nodeRef init
init field holds the value to initialize a variable to.
This struct specifies the lut_expr node.
tree_nodeRef directive
this node represents the directive of the pragma
PointToSolutionRef clobbered_set
The clobbered set of this gimple node.
This struct specifies the complex_cst node.
tree_nodeRef type
type of the expression
bool static_flag
to manage standard static attribute
tree_nodeRef csts
csts is a list in which each element's TREE_PURPOSE is a name and the TREE_VALUE is the value (an int...
struct definition of the type node structures.
bool unsigned_flag
unsigned means an unsigned type (macro TYPE_UNSIGNED)
This struct specifies the tree_list node.
tree_nodeRef rslt
rslt is null for struct templates and declaration for object to be created for non-struct templates ...
Class specification of the tree_reindex support class.
tree_nodeRef clnp
it is the cleanup for this node
static const unsigned int ENTRY_BLOCK_ID
constant identifying the entry basic block
CustomUnorderedSet< tree_nodeRef > defs
The set of gimple node which writes this variable.
This struct represent a statement expression.
int used
used is nonzero if the name is used in its scope (macro TREE_USED)
This struct specifies the call_expr node.
std::string strg
strg is the TREE_STRING_POINTER.
tree_nodeRef op1
initialization
unsigned int algn
algn field holds the alignment required for the datum, in bits.
tree_nodeRef scope
this node defines the scope of the pragma
#define WRITE_STRGLNGT_STRING(os, field)
Macro which writes on an output stream a string with its length.
tree_nodeRef body
Is the body of the statement.
tree_nodeRef min
minimum values this SSA may reach
tree_nodeRef op0
The first operand of the binary expression.
tree_nodeRef op0
op0 is the operand 0 (macro CASE_LOW) of the case label expression
tree_nodeRef step
STEP integer constant.
This struct specifies reference to particular overloaded struct method The tree walker structure of t...
struct definition of the common part of a gimple with virtual operands
bool bl_flag
used to know if bl string is set
This struct represent a 'return' statement.
This struct specifies a multi-way-if construct.
std::string ID_implementation
The identifier of the implementation.
This struct specifies the real_cst node.
std::vector< tree_nodeRef > list_of_op
list_of_op is the array of tree node stored in tree_vec node.(macro TREE_VEC_ELT) ...
tree_nodeRef op0
The first operand of the Quaternary expression.
tree_nodeRef op0
The first operand of the ternary expression.
tree_nodeRef op1
The sections part (the tree_node is a omp_sections_pragma one)
int virt
Is the result of tree_low_cst (THUNK_VIRTUAL_OFFSET (t), 0) for this node.
PointToSolutionRef use_set
The point-to set used by this gimple node.
tree_nodeRef vfld
FIXME: check the meaning.
tree_nodeRef idx2
INDEX register.
This struct specifies the case_label_expr node.
tree_nodeRef type
type field holds the data type of the object, when relevant.
tree_nodeRef op1
The second operand of the binary expression.
bool struct_flag
true when a struct is considered
Classes specification of the tree_node data structures not present in the gcc.
tree_nodeRef inst
inst field holds the template instantiation vector.
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.
bool pipeline_enabled
True if pipelining is enabled for the function.
Low-level memory addressing.
bool spec_flag
true when a spec is considered
tree_nodeRef clob
clob is the operand 3: ASM_CLOBBERS, this represents the clobbers for the statement.
bool null
True if the points to includes nothing.
tree_nodeRef valu
purp is the TREE_VALUE field which stores the elements of the list.
tree_nodeRef purp
purp is the TREE_PURPOSE field occasionally used as well to get the effect of Lisp association lists...
int line
line is the line number where the compound_stmt is defined.
std::string bit_values
for each bit of the SSA variable tells if it is equal to U,X,0,1
std::string strg
Store the identifier string associated with the identifier_node.
This struct specifies the ssa_name node.
TreeNodeSet vuses
vuses of this statement
tree_nodeRef next
Is the next statement.
tree_nodeRef vdef
vdef of this statement
tree_nodeRef elts
field elts is the type of an array element (tree-dump.c use the macro TREE_TYPE)
tree_nodeRef ptd
If pointer mem point to type.
tree_nodeRef op
op field is the operand of this node
This struct specifies the gimple_goto node.
tree_nodeRef expr
Is the statement given by the expression.
const bool operator_flag
Store true if the identifier_node is an operator.
This struct specifies the for expression Used to represent a for construct.
struct definition of the integer_type tree node.
struct definition of the integer_type tree node.
unsigned counter[N_THREADS]
#define WRITE_NFIELD(os, name, field)
Macro which writes on an output stream a named field.
tree_nodeRef op1
the vec of CASE_LABEL_EXPRs
#define NO_VISIT
constant used to avoid member visit
std::vector< tree_nodeRef > variables
Set of variables that this pointer may point to.
tree_nodeRef op2
postincrement
tree_nodeRef type
starting from GCC 4.7.2 ssa_name has a type
bool virt_flag
flags used to know if virt is set
size_t lngt
lngt is the length of the array (list_of_op) stored in tree_vec node.(macro TREE_VEC_LENGTH) ...
tree_nodeRef op
PACK_EXPANSION_PATTERN.
struct definition of the binary node structures.
tree_nodeRef smt_ann
symbol_memory_tag annotation
tree_nodeRef type
type field is the type of the node
#define WRITE_SRCP(os, include_name, line_number, column_number)
Macro which writes on an output stream the srcp fields.
This struct specifies the tree_vec node.
unsigned int orig_vers
original SSA version number from GCC
#define WRITE_UFIELD(os, field)
Macro which writes on an output stream an unnamed field.
bool packed_flag
Indicates this field should be bit-packed.
tree_nodeRef arg
arguments stored in the argument pack
tree_nodeRef op8
eighth operand
tree_nodeRef op
op field is the operand of the unary expression
tree_nodeRef smt_ann
symbol_memory_tag annotation
tree_nodeRef body
body is the operand 1 (GIMPLE_BIND_BODY), this is the body, the expression to be computed using the v...
tree_nodeRef op0
The boolean condition.
tree_nodeRef symbol
static or global variable
tree_nodeRef scpe
scope declaration
tree_nodeRef real
real is the TREE_REALPART which content is other constant node.
This struct specifies the gimple_asm node.
tree_nodeRef inline_body
java inline body
tree_nodeRef op1
The second operand of the ternary expression.
bool extern_flag
a variable can be extern
#define WRITE_STRGLNGT_IDENTIFIER(os, field)
Macro which writes on an output stream a string with its length.
tree_nodeRef max
maximum values this SSA may reach
tree_nodeRef size
size field holds the size of datum, in bits.
This struct specifies the gimple_call node.
tree_nodeRef op5
fifth operand
tree_nodeRef offset
OFFSET integer constant.
struct definition of the declaration node structures.
bool addr_not_taken
True when we are able to prove that its address is not taken and do not escape.
int bases
The number of basetypes for NODE.
tree_nodeRef op2
The third operand of the Quaternary expression.
tree_nodeRef chan
Is the chain.
unsigned int false_edge
in case the last statement is a gimple_cond associated with an if statement this member contains the ...
std::vector< std::string > list_of_op_names
store the list of operator names
bool hwcall_flag
flag true when the function is marked as hwcall
unsigned int prec
prec field is the number of bits used by this type.
This struct specifies the while expression Used to represent a while construct.
std::vector< tree_nodeRef > pragmas
list of pragmas associated to the function
tree_nodeRef fn
fn is the operand 0 of the call expression: this is the function
Represents a type expression that will be expanded into a list of types when instantiated with one or...
Memory tags used in tree-ssa to represent memory locations in virtual SSA.