51 #include "config_HAVE_FROM_PRAGMA_BUILT.hpp" 52 #include "config_HAVE_UNORDERED.hpp" 79 template <
class value>
87 #define GET_KIND_TEXT(meth) \ 88 std::string get_kind_text() const override \ 90 return std::string(#meth); \ 93 #define NON_LEAF_TREE_NODES \ 94 (tree_node)(WeightedNode)(attr)(srcp)(PointToSolution)(decl_node)(expr_node)(gimple_node)(unary_expr)(binary_expr)( \ 95 ternary_expr)(quaternary_expr)(type_node)(memory_tag)(cst_node) 98 #define VISITED_OBJ_SEQ1 \ 99 NON_LEAF_TREE_NODES UNARY_EXPRESSION_TREE_NODES BINARY_EXPRESSION_TREE_NODES TERNARY_EXPRESSION_TREE_NODES 100 #define VISITED_OBJ_SEQ2 \ 101 QUATERNARY_EXPRESSION_TREE_NODES GIMPLE_NODES MISCELLANEOUS_EXPR_TREE_NODES MISCELLANEOUS_OBJ_TREE_NODES \ 102 TYPE_NODE_TREE_NODES CONST_OBJ_TREE_NODES DECL_NODE_TREE_NODES BASIC_BLOCK_TREE_NODES \ 103 PANDA_EXTENSION_TREE_NODES 106 #define OBJ_SPECIALIZED_SEQ \ 107 (tree_node)(WeightedNode)(attr)(srcp)(decl_node)(expr_node)(gimple_node)(unary_expr)(binary_expr)(ternary_expr)( \ 108 quaternary_expr)(type_node)(memory_tag)(cst_node)(error_mark)(array_type)(gimple_asm)(baselink)(gimple_bind)( \ 109 binfo)(block)(call_expr)(aggr_init_expr)(gimple_call)(case_label_expr)(cast_expr)(complex_cst)(complex_type)( \ 110 gimple_cond)(const_decl)(constructor)(enumeral_type)(expr_stmt)(field_decl)(function_decl)(function_type)( \ 111 gimple_assign)(gimple_goto)(handler)(identifier_node)(integer_cst)(integer_type)(gimple_label)(lut_expr)( \ 112 method_type)(namespace_decl)(overload)(parm_decl)(gimple_phi)(pointer_type)(real_cst)(real_type)(record_type)( \ 113 reference_type)(result_decl)(gimple_return)(return_stmt)(type_pack_expansion)(expr_pack_expansion)(scope_ref)( \ 114 ssa_name)(statement_list)(string_cst)(gimple_switch)(template_decl)(template_parm_index)(tree_list)(tree_vec)( \ 115 try_block)(type_decl)(union_type)(var_decl)(vector_cst)(vector_type)(type_argument_pack)( \ 116 nontype_argument_pack)(target_expr)(target_mem_ref)(target_mem_ref461)(bloc)(null_node)(gimple_pragma)( \ 117 issue_pragma)(blackbox_pragma)(profiling_pragma)(statistical_profiling)(map_pragma)(call_hw_pragma)( \ 118 call_point_hw_pragma)(omp_pragma)(omp_critical_pragma)(omp_declare_simd_pragma)(omp_for_pragma)( \ 119 omp_parallel_pragma)(omp_sections_pragma)(omp_parallel_sections_pragma)(omp_section_pragma)(omp_simd_pragma)( \ 120 omp_target_pragma)(omp_task_pragma)(gimple_while)(gimple_for)(gimple_multi_way_if)(tree_reindex) 122 #define OBJ_NOT_SPECIALIZED_SEQ \ 123 (translation_unit_decl)(label_decl)(void_type)(template_type_parm)(set_type)(qual_union_type)(offset_type)( \ 124 lang_type)(CharType)(nullptr_type)(boolean_type)(typename_type)(none)(vec_new_expr) \ 125 UNARY_EXPRESSION_TREE_NODES BINARY_EXPRESSION_TREE_NODES TERNARY_EXPRESSION_TREE_NODES(ctor_initializer)( \ 126 trait_expr)(template_id_expr)(placeholder_expr)(new_expr)(gimple_resx)(gimple_predict)(gimple_nop) \ 127 QUATERNARY_EXPRESSION_TREE_NODES(modop_expr)(PointToSolution)(omp_atomic_pragma)(using_decl)(void_cst) 161 virtual enum kind get_kind()
const = 0;
166 virtual std::string get_kind_text()
const = 0;
199 static enum kind get_kind(
const std::string& name);
206 static std::string GetString(
const enum kind k);
236 struct TreeNodeConstHash :
public std::unary_function<tree_nodeConstRef, size_t>
240 std::hash<unsigned int> hasher;
241 return hasher(tn->
index);
245 struct TreeNodeConstEqualTo :
public std::binary_function<tree_nodeConstRef, tree_nodeConstRef, bool>
251 TreeNodeConstEqualTo();
281 struct TreeNodeHash :
public std::unary_function<tree_nodeRef, size_t>
285 std::hash<unsigned int> hasher;
286 return hasher(tn->
index);
325 template <
typename value>
330 template <
typename value>
343 #define GET_NODE(t) \ 344 ((t) ? ((t)->get_kind() == tree_reindex_K ? (GetPointerS<tree_reindex>(t))->actual_tree_node : \ 345 throw_error(t, #t, __PRETTY_FUNCTION__, __FILE__, __LINE__)) : \ 346 throw_error(t, #t, __PRETTY_FUNCTION__, __FILE__, __LINE__)) 347 #define GET_CONST_NODE(t) \ 348 ((t) ? ((t)->get_kind() == tree_reindex_K ? (GetPointerS<const tree_reindex>(t))->actual_tree_node : \ 349 throw_error(t, #t, __PRETTY_FUNCTION__, __FILE__, __LINE__)) : \ 350 throw_error(t, #t, __PRETTY_FUNCTION__, __FILE__, __LINE__)) 352 #define GET_NODE(t) (GetPointerS<tree_reindex>(t))->actual_tree_node 353 #define GET_CONST_NODE(t) (GetPointerS<const tree_reindex>(t))->actual_tree_node 361 #define GET_INDEX_NODE(t) (GET_NODE(t))->index 363 #define GET_INDEX_CONST_NODE(t) (GET_CONST_NODE(t))->index 371 #define CASE_UNARY_EXPRESSION \ 374 case alignof_expr_K: \ 376 case bit_not_expr_K: \ 379 case cleanup_point_expr_K: \ 381 case convert_expr_K: \ 383 case fix_ceil_expr_K: \ 384 case fix_floor_expr_K: \ 385 case fix_round_expr_K: \ 386 case fix_trunc_expr_K: \ 388 case imagpart_expr_K: \ 389 case indirect_ref_K: \ 390 case misaligned_indirect_ref_K: \ 392 case negate_expr_K: \ 393 case non_lvalue_expr_K: \ 396 case realpart_expr_K: \ 397 case reference_expr_K: \ 398 case reinterpret_cast_expr_K: \ 399 case sizeof_expr_K: \ 400 case static_cast_expr_K: \ 402 case truth_not_expr_K: \ 403 case unsave_expr_K: \ 404 case va_arg_expr_K: \ 405 case view_convert_expr_K: \ 406 case reduc_max_expr_K: \ 407 case reduc_min_expr_K: \ 408 case reduc_plus_expr_K: \ 409 case vec_unpack_hi_expr_K: \ 410 case vec_unpack_lo_expr_K: \ 411 case vec_unpack_float_hi_expr_K: \ 412 case vec_unpack_float_lo_expr_K 419 #define CASE_NON_ADDR_UNARY_EXPRESSION \ 421 case alignof_expr_K: \ 423 case bit_not_expr_K: \ 426 case cleanup_point_expr_K: \ 428 case convert_expr_K: \ 430 case fix_ceil_expr_K: \ 431 case fix_floor_expr_K: \ 432 case fix_round_expr_K: \ 433 case fix_trunc_expr_K: \ 435 case imagpart_expr_K: \ 436 case indirect_ref_K: \ 437 case misaligned_indirect_ref_K: \ 439 case negate_expr_K: \ 440 case non_lvalue_expr_K: \ 442 case realpart_expr_K: \ 443 case reference_expr_K: \ 444 case reinterpret_cast_expr_K: \ 445 case sizeof_expr_K: \ 446 case static_cast_expr_K: \ 448 case truth_not_expr_K: \ 449 case unsave_expr_K: \ 450 case va_arg_expr_K: \ 451 case view_convert_expr_K: \ 452 case reduc_max_expr_K: \ 453 case reduc_min_expr_K: \ 454 case reduc_plus_expr_K: \ 455 case vec_unpack_hi_expr_K: \ 456 case vec_unpack_lo_expr_K: \ 457 case vec_unpack_float_hi_expr_K: \ 458 case vec_unpack_float_lo_expr_K 463 #define CASE_BINARY_EXPRESSION \ 465 case bit_and_expr_K: \ 466 case bit_ior_expr_K: \ 467 case bit_xor_expr_K: \ 469 case ceil_div_expr_K: \ 470 case ceil_mod_expr_K: \ 471 case complex_expr_K: \ 472 case compound_expr_K: \ 473 case eh_filter_expr_K: \ 475 case exact_div_expr_K: \ 477 case floor_div_expr_K: \ 478 case floor_mod_expr_K: \ 481 case goto_subroutine_K: \ 485 case lrotate_expr_K: \ 486 case lshift_expr_K: \ 492 case modify_expr_K: \ 494 case mult_highpart_expr_K: \ 496 case ordered_expr_K: \ 498 case pointer_plus_expr_K: \ 499 case postdecrement_expr_K: \ 500 case postincrement_expr_K: \ 501 case predecrement_expr_K: \ 502 case preincrement_expr_K: \ 505 case round_div_expr_K: \ 506 case round_mod_expr_K: \ 507 case rrotate_expr_K: \ 508 case rshift_expr_K: \ 509 case set_le_expr_K: \ 510 case trunc_div_expr_K: \ 511 case trunc_mod_expr_K: \ 512 case truth_and_expr_K: \ 513 case truth_andif_expr_K: \ 514 case truth_or_expr_K: \ 515 case truth_orif_expr_K: \ 516 case truth_xor_expr_K: \ 517 case try_catch_expr_K: \ 518 case try_finally_K: \ 525 case unordered_expr_K: \ 526 case widen_sum_expr_K: \ 527 case widen_mult_expr_K: \ 528 case with_size_expr_K: \ 529 case vec_lshift_expr_K: \ 530 case vec_rshift_expr_K: \ 531 case widen_mult_hi_expr_K: \ 532 case widen_mult_lo_expr_K: \ 533 case vec_pack_trunc_expr_K: \ 534 case vec_pack_sat_expr_K: \ 535 case vec_pack_fix_trunc_expr_K: \ 536 case vec_extracteven_expr_K: \ 537 case vec_extractodd_expr_K: \ 538 case vec_interleavehigh_expr_K: \ 539 case vec_interleavelow_expr_K: \ 540 case extract_bit_expr_K: \ 541 case sat_plus_expr_K: \ 542 case sat_minus_expr_K: \ 543 case extractvalue_expr_K: \ 544 case extractelement_expr_K: \ 550 #define CASE_TERNARY_EXPRESSION \ 552 case bit_field_ref_K: \ 553 case bit_ior_concat_expr_K: \ 555 case with_cleanup_expr_K: \ 556 case obj_type_ref_K: \ 559 case vec_cond_expr_K: \ 560 case vec_perm_expr_K: \ 561 case dot_prod_expr_K: \ 562 case ternary_plus_expr_K: \ 563 case ternary_pm_expr_K: \ 564 case ternary_mp_expr_K: \ 565 case ternary_mm_expr_K: \ 568 case insertvalue_expr_K: \ 569 case insertelement_expr_K 574 #define CASE_QUATERNARY_EXPRESSION \ 581 #define CASE_TYPE_NODES \ 583 case boolean_type_K: \ 585 case nullptr_type_K: \ 586 case type_pack_expansion_K: \ 587 case complex_type_K: \ 588 case enumeral_type_K: \ 589 case function_type_K: \ 590 case integer_type_K: \ 592 case method_type_K: \ 593 case offset_type_K: \ 594 case pointer_type_K: \ 595 case qual_union_type_K: \ 597 case record_type_K: \ 598 case reference_type_K: \ 600 case template_type_parm_K: \ 601 case typename_type_K: \ 603 case vector_type_K: \ 605 case type_argument_pack_K 610 #define CASE_PRAGMA_NODES \ 612 case blackbox_pragma_K: \ 613 case profiling_pragma_K: \ 614 case statistical_profiling_K: \ 616 case call_hw_pragma_K: \ 617 case call_point_hw_pragma_K: \ 620 case omp_atomic_pragma_K: \ 621 case omp_critical_pragma_K: \ 622 case omp_declare_simd_pragma_K: \ 623 case omp_for_pragma_K: \ 624 case omp_parallel_pragma_K: \ 625 case omp_sections_pragma_K: \ 626 case omp_parallel_sections_pragma_K: \ 627 case omp_section_pragma_K: \ 628 case omp_simd_pragma_K: \ 629 case omp_target_pragma_K: \ 630 case omp_task_pragma_K 635 #define CASE_FAKE_NODES \ 638 case placeholder_expr_K: \ 644 #define CASE_CPP_NODES \ 646 case ctor_initializer_K: \ 655 case return_stmt_K: \ 657 case template_id_expr_K: \ 658 case template_parm_index_K: \ 661 case vec_new_expr_K: \ 663 case nontype_argument_pack_K: \ 665 case expr_pack_expansion_K 672 #define CASE_DECL_NODES \ 675 case function_decl_K: \ 677 case namespace_decl_K: \ 679 case result_decl_K: \ 680 case translation_unit_decl_K: \ 689 #define CASE_CST_NODES \ 691 case integer_cst_K: \ 700 #define CASE_GIMPLE_NODES \ 702 case gimple_assign_K: \ 703 case gimple_bind_K: \ 704 case gimple_call_K: \ 705 case gimple_cond_K: \ 707 case gimple_goto_K: \ 708 case gimple_label_K: \ 709 case gimple_multi_way_if_K: \ 712 case gimple_pragma_K: \ 713 case gimple_predict_K: \ 714 case gimple_resx_K: \ 715 case gimple_return_K: \ 716 case gimple_switch_K: \ 720 #define CREATE_TREE_NODE_CLASS(class_name, superclass) \ 721 struct class_name : public superclass \ 723 GET_KIND_TEXT(class_name) \ 724 GET_KIND(class_name) \ 725 virtual void visit(tree_node_visitor* const v) const override; \ 728 GETID(superclass) = 0 \ 730 explicit class_name(unsigned int i) : superclass(i) \ 794 bool is_constructor()
const;
797 bool is_destructor()
const;
800 bool is_member()
const;
803 bool is_call()
const;
809 bool is_public()
const;
812 bool is_private()
const;
815 bool is_protected()
const;
818 bool is_bitfield()
const;
855 srcp() : line_number(0), column_number(0)
1035 void Add(
const std::string& variable);
1047 bool is_a_singleton()
const;
1053 bool is_fully_resolved()
const;
1157 GETID(clobbered_set),
1411 list_of_aliases.push_back(a);
1424 GETID(list_of_aliases)
1684 list_of_vars.push_back(a);
1703 GETID(list_of_vars),
1738 return list_of_access_binf[i].second;
1744 return list_of_access_binf.size();
1771 GETID(list_of_access_binf)
2454 list_of_idx_valu.push_back(std::pair<tree_nodeRef, tree_nodeRef>(idx, valu));
2463 list_of_idx_valu.push_back(std::pair<tree_nodeRef, tree_nodeRef>(
tree_nodeRef(), valu));
2483 GETID(list_of_idx_valu)
2794 #if HAVE_FROM_PRAGMA_BUILT 2795 size_t omp_for_wrapper;
2802 std::string omp_critical;
2883 list_of_op_names.push_back(a);
2893 bool is_constructor();
2896 bool is_destructor();
2899 bool is_operator()
const;
2908 bool is_protected();
2911 bool is_pipelined();
2913 void set_pipelining(
bool v);
2915 bool is_simple_pipeline();
2917 void set_simple_pipeline(
bool v);
2919 int get_initiation_time();
2921 void set_initiation_time(
int time);
2943 GETID(list_of_args),
3245 #pragma GCC diagnostic push 3246 #pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant" 3250 #pragma GCC diagnostic pop 3750 using DefEdge = std::pair<tree_nodeRef, unsigned int>;
3832 GETID(list_of_def_edge)
3838 void SetSSAUsesComputed();
4144 list_of_flds.push_back(a);
4153 list_of_fncs.push_back(a);
4167 std::string get_maybe_name()
const;
4186 GETID(list_of_flds),
4187 GETID(list_of_fncs),
4583 size_t CGetNumberUses()
const;
4679 void add_bloc(
const blocRef& a);
4687 list_of_stmt.push_back(a);
4706 GETID(list_of_stmt),
5088 :
tree_node(i), constant_flag(
false), readonly_flag(
false), idx(0), level(0), orig_level(0)
5318 list_of_op.push_back(a);
5324 return list_of_op.size();
5330 return list_of_op[n];
5575 list_of_flds.push_back(a);
5584 list_of_fncs.push_back(a);
5603 GETID(list_of_flds),
5604 GETID(list_of_fncs),
5904 list_of_valu.push_back(a);
struct definition of the type_decl tree node.
gimple_switch(unsigned int i)
constructor
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.
return_stmt(unsigned int i)
constructor
This struct specifies a point-to solution.
This struct specifies the integer_cst node.
bool libbambu_flag
it is true when this is a declared inside libbambu
pointer_type(unsigned int i)
constructor
binfo(unsigned int i)
constructor
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
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)
lut_expr(unsigned int i)
constructor
() label_decl()() modop_expr() new_expr() placeholder_expr()() boolean_type() CharType() nullptr_type() lang_type() offset_type() qual_union_type() set_type() template_type_parm() typename_type(void_type)) void tree_node
This struct specifies the field bloc (basic block).
enumeral_type(unsigned int i)
constructor
unsigned int prec
prec field is the number of bits used by this type (macro TYPE_PRECISION)
() label_decl()() modop_expr() new_expr() placeholder_expr() template_id_expr(vec_new_expr)) BOOST_PP_SEQ_FOR_EACH(VISIT_TREE_NODE_MACRO
std::vector< tree_nodeRef > list_of_fncs
list_of_fncs is a chain of methods_decl for the fields of the struct.
RangeRef range
Range information about numerical values of the SSA variable.
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 get_op(size_t n) const
return the n-th (from 0 to size() -1) operand of tree_vec
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.
std::unordered_set< _Value, _Hash, _Pred, _Alloc > UnorderedSetStd
Autoheader include.
cast_expr(unsigned int i)
constructor
quaternary_expr(unsigned int i)
constructor
template_decl(unsigned int i)
constructor
cst_node(unsigned int i)
constructor
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.
size_t get_number_of_op() const
returns the number of operands
void add(const TreeVocabularyTokenTypes_TokenEnum a)
Add an attribute to list of attribute.
void add_fncs(const tree_nodeRef &a)
Add a methods_decl to list of fncs.
bool virtual_flag
flag for virtual phi
bool writing_memory
True if function write in memory somehow.
tree_nodeRef next
Is the next statement.
void add_flds(const tree_nodeRef &a)
Add a field_decl to list of flds.
namespace_decl(unsigned int i)
constructor
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.
void add_valu(const tree_nodeRef &a)
Add a value to list of value.
type_pack_expansion(unsigned int i)
constructor
tree_nodeRef op1
The second operand of the binary expression.
tree_nodeRef get_base(size_t i) const
return the i-th element of baseinfo
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.
char base
This version is stamped on May 10, 2016.
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.
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>
CONSTREF_FORWARD_DECL(tree_node)
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.
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
DefEdgeList list_of_def_edge
store the list pairs: <def, edge>.
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.
This class manages the tree structures extracted from the raw file.
struct definition of the method_type tree node.
tree_nodeRef decl
it is the target of an initialization
TreeNodeSet def_stmts
in case ssa_name is not volatile the statement which defines it; statements could be more than one be...
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.
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...
std::list< DefEdge > DefEdgeList
The type of the def edge list.
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
overload(unsigned int i)
constructor
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.
scope_ref(unsigned int i)
constructor
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...
unsigned int prec
prec field is the number of bits used by this type (tree-dump.c use the macro TYPE_PRECISION) ...
tree_nodeRef base
BASE register.
ternary_expr(unsigned int i)
constructor
tree_nodeRef op
PACK_EXPANSION_PATTERN.
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".
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.
std::string bit_values
for each bit of the SSA variable tells if it is equal to U,X,0,1
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.
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.
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.
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
void add_stmt(const tree_nodeRef &a)
Add a value to list of stmt.
struct definition of the label_decl tree node.
A set of const tree node.
union_type(unsigned int i)
constructor
vector_cst(unsigned int i)
constructor
baselink(unsigned int i)
constructor
void line(int x1, int y1, int x2, int y2, unsigned int color)
gimple_nop(unsigned int i)
constructor
struct definition of the label_decl tree node.
std::vector< tree_nodeRef > args
The arguments of the call_expr.
gimple_resx(unsigned int i)
constructor
tree_nodeRef op3
The fourth operand of the Quaternary expression.
void add_valu(const tree_nodeRef &valu)
Add a pair <null, value> to the list of idx_val.
std::string ToString(ActorGraphBackend_Type actor_graph_backend_type)
Header include.
struct definition of the result_decl tree node.
This struct specifies the vector_cst node.
integer_cst(unsigned int i)
constructor
tree_nodeRef scpe
context/scope of the type object.
tree_nodeRef memuse
whole memory operand use
TreeNodeSet vovers
vovers of this statement
This struct specifies the gimple_phi node.
() label_decl() using_decl(translation_unit_decl)) BOOST_PP_SEQ_FOR_EACH(VISIT_TREE_NODE_MACRO
size_t get_baseinfo_size() const
return the size of baseinfo vector
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.
int lngt
lngt is the TREE_STRING_LENGTH.
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.
bool unsigned_flag
unsigned means an unsigned type (macro TYPE_UNSIGNED)
void add_alias(const tree_nodeRef a)
Add an alias to the list of aliases.
tree_nodeRef init
it is the initializer for the target
std::set< Key, Compare, Alloc > OrderedSetStd
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.
TreeNodeMap< size_t > use_stmts
The uses of this SSA: it is a map since the same SSA can be used multiple times in the same statement...
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
gimple_goto(unsigned int i)
constructor
#define GET_KIND(meth)
Macro which define a function that return the parameter as a enum kind.
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)
RangeRef range
Range information about bounds of the function parameter (valid for real_type too) ...
static const uint32_t k[]
This C++ header file contains common macros for the tree structure.
This struct specifies super class for constant nodes.
#define GET_KIND_TEXT(meth)
Macro which defines the get_kind_text function that returns the parameter as a string.
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...
bool escaped
True if the points to includes the local escaped solution.
real_type(unsigned int i)
constructor
std::vector< std::pair< TreeVocabularyTokenTypes_TokenEnum, tree_nodeRef > > list_of_access_binf
is the list of pair access binf: baseinfo vector.
gimple_label(unsigned int i)
constructor
bool C_flag
is true when the declaration has the C attribute
tree_nodeRef tmpl_args
tmpl_args holds template instantiations It is a TREE_VEC whose LIST_OF_OP holds template instantiatio...
tree_nodeRef max
max: tree-dump.c use the macro TYPE_MAX_VALUE
const unsigned int index
Represent the index read from the raw file and the index-1 of the vector of tree_node associated to t...
Low-level memory addressing.
memory_tag(unsigned int i)
constructor
bool reverse_restrict_flag
True if parameters are not alias after its invocation.
std::string operation
The operation.
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.
std::pair< tree_nodeRef, unsigned int > DefEdge
The type of the def edge.
void add_op(const tree_nodeRef &a)
Add a value to list of operands.
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...
tree_nodeRef out
out is the operand 1: ASM_OUTPUTS, this represents the outputs for the statement. ...
integer_type(unsigned int i)
constructor
Represents an expression that will be expanded into a list of expressions when instantiated with one ...
tree_nodeRef slot
slot is the slot which was allocated for this expression
const_decl(unsigned int i)
constructor
This struct represents a reference to a member function or member functions from a base class...
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)
type_decl(unsigned int i)
constructor
string_cst(unsigned int i)
constructor
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 ...
#define GETID(field)
return the id given a super class or a class member
tree_nodeRef param_packs
PACK_EXPANSION_PARAMETER_PACKS.
unsigned offset[NUM_VERTICES+1]
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.
gimple_asm(unsigned int i)
constructor
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...
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.
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
void add_flds(const tree_nodeRef &a)
Add a field_decl to list of flds.
This struct specifies the block node.
nontype_argument_pack(unsigned int i)
constructor
() label_decl()() modop_expr() new_expr() placeholder_expr() type_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)
TreeVocabularyTokenTypes_TokenEnum
Template definition of refcount.
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)
handler(unsigned int i)
constructor
void add_vars(const tree_nodeRef &a)
Add a var to list of vars.
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
field_decl(unsigned int i)
constructor
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) ...
type_argument_pack(unsigned int i)
constructor
int fixd
Is the result of THUNK_FIXED_OFFSET(t) for this tree node.
bool virtual_flag
flag for virtual SSA
std::map< _Key, _Tp, _Compare, _Alloc > OrderedMapStd
unsigned int vers
vers is the SSA version number of this SSA name.
binary_expr(unsigned int i)
constructor
record_type(unsigned int i)
constructor
bool nonlocal
True if the points to includes any global memory.
tree_nodeRef init
init field holds the value to initialize a variable to.
template_parm_index(unsigned int i)
constructor
This struct specifies the lut_expr node.
reference_type(unsigned int i)
constructor
constructor(unsigned int i)
constructor
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 ...
tree_nodeRef clnp
it is the cleanup for this node
void add_fncs(const tree_nodeRef &a)
Add a methods_decl to list of fncs.
CustomUnorderedSet< tree_nodeRef > defs
The set of gimple node which writes this variable.
This struct represent a statement expression.
tree_list(unsigned int i)
constructor
int used
used is nonzero if the name is used in its scope (macro TREE_USED)
gimple_bind(unsigned int i)
constructor
#define CREATE_TREE_NODE_CLASS(class_name, superclass)
macro to create simple tree classes
This struct specifies the call_expr node.
std::string strg
strg is the TREE_STRING_POINTER.
error_mark(unsigned int i)
constructor
unsigned int algn
algn field holds the alignment required for the datum, in bits.
target_expr(unsigned int i)
tree_nodeRef body
Is the body of the statement.
tree_nodeRef min
minimum values this SSA may reach
tree_node(unsigned int i)
Constructor.
bool updated_ssa_uses
True if SSA uses are updated.
method_type(unsigned int i)
constructor
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_vec(unsigned int i)
constructor
tree_nodeRef step
STEP integer constant.
void add_idx_valu(const tree_nodeRef &idx, const tree_nodeRef &valu)
Add a pair <index value>=""> to the list of idx_val.
This struct specifies reference to particular overloaded struct method The tree walker structure of t...
std::unordered_map< T, U, Hash, Eq, Alloc > UnorderedMapStd
Autoheader include.
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 the real_cst node.
bool artificial
this field is true if the gimple_node was created artificially to handle some specific situations...
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.
real_cst(unsigned int i)
constructor
Template borrowed from the ANTLR library by Terence Parr (http://www.jGuru.com - Software rights: htt...
gimple_cond(unsigned int i)
constructor
int virt
Is the result of tree_low_cst (THUNK_VIRTUAL_OFFSET (t), 0) for this node.
complex_cst(unsigned int i)
constructor
std::ostream & operator<<(std::ostream &OS, const Range &R)
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
tree_nodeRef inst
inst field holds the template instantiation vector.
bool pipeline_enabled
True if pipelining is enabled for the function.
Low-level memory addressing.
bool spec_flag
true when a spec is considered
function_type(unsigned int i)
constructor
expr_pack_expansion(unsigned int i)
constructor
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...
refcount< tree_node > tree_nodeRef
RefCount type definition of the tree_node class structure.
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.
RangeRef range
Range information about bounds of the function return value (valid for real_type too) ...
struct definition of the integer_type tree node.
struct definition of the integer_type tree node.
tree_nodeRef op1
the vec of CASE_LABEL_EXPRs
x
Return the smallest n such that 2^n >= _x.
statement_list(unsigned int i)
constructor
expr_stmt(unsigned int i)
constructor
std::vector< tree_nodeRef > variables
Set of variables that this pointer may point to.
This struct specifies a hint for branch prediction.
block(unsigned int i)
constructor
void add(std::string a)
Add a string to list of attribute.
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
array_type(unsigned int i)
constructor
size_t lngt
lngt is the length of the array (list_of_op) stored in tree_vec node.(macro TREE_VEC_LENGTH) ...
complex_type(unsigned int i)
constructor
tree_nodeRef op
PACK_EXPANSION_PATTERN.
case_label_expr(unsigned int i)
constructor
gimple_return(unsigned int i)
constructor
expr_node(unsigned int i)
constructor
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
This struct specifies the tree_vec node.
Visitor/walker design pattern.
unsigned int orig_vers
original SSA version number from GCC
bool packed_flag
Indicates this field should be bit-packed.
bool keep
when true CSE and Bit Value optimization will not remove from the IR
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...
target_mem_ref(unsigned int i)
constructor
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
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.
A map with key tree_nodeRef.
tree_nodeRef chan
Is the chain.
try_block(unsigned int i)
constructor
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.
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
vector_type(unsigned int i)
constructor
result_decl(unsigned int i)
constructor
unary_expr(unsigned int i)
constructor
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.
target_mem_ref461(unsigned int i)
constructor