PandA-2024.02
Data Structures | Macros | Typedefs | Functions
tree_node.hpp File Reference

Classes specification of the tree_node data structures. More...

#include "config_HAVE_FROM_PRAGMA_BUILT.hpp"
#include "config_HAVE_UNORDERED.hpp"
#include <cstddef>
#include <functional>
#include <iosfwd>
#include <list>
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "custom_map.hpp"
#include "custom_set.hpp"
#include "exceptions.hpp"
#include "panda_types.hpp"
#include "refcount.hpp"
#include "tree_common.hpp"
#include "visitor.hpp"
Include dependency graph for tree_node.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  TreeNodeMap< value >
 A map with key tree_nodeRef. More...
 
class  tree_node_visitor
 
class  tree_node
 Abstract pure class for the tree structure. More...
 
class  TreeNodeConstSorter
 
class  TreeNodeConstSet
 A set of const tree node. More...
 
class  TreeNodeSorter
 A set of tree node. More...
 
class  TreeNodeSet
 
class  TreeNodeMap< value >
 A map with key tree_nodeRef. More...
 
struct  WeightedNode
 struct definition of common part of WeightedNode (gimple_assign, expr_node) More...
 
struct  attr
 struct definition of the field attr on function_decl, field_decl, var_decl tree node. More...
 
struct  srcp
 struct definition of the source position. More...
 
struct  decl_node
 struct definition of the declaration node structures. More...
 
struct  expr_node
 struct definition of the common part of an expression More...
 
struct  PointToSolution
 This struct specifies a point-to solution. More...
 
struct  gimple_node
 struct definition of the common part of a gimple with virtual operands More...
 
struct  unary_expr
 struct definition of the unary node structures. More...
 
struct  binary_expr
 struct definition of the binary node structures. More...
 
struct  ternary_expr
 struct definition of the ternary node structures. More...
 
struct  quaternary_expr
 struct definition of the Quaternary node structures. More...
 
struct  type_node
 struct definition of the type node structures. More...
 
struct  memory_tag
 Memory tags used in tree-ssa to represent memory locations in virtual SSA. More...
 
struct  cst_node
 This struct specifies super class for constant nodes. More...
 
struct  error_mark
 Any erroneous construct is parsed into a node of this type. More...
 
struct  array_type
 struct definition of the array_type tree node. More...
 
struct  gimple_asm
 This struct specifies the gimple_asm node. More...
 
struct  baselink
 This struct represents a reference to a member function or member functions from a base class. More...
 
struct  gimple_bind
 GIMPLE_BIND <VARS, BLOCK, BODY> represents a lexical scope. More...
 
struct  binfo
 This struct specifies the binfo node. More...
 
struct  block
 This struct specifies the block node. More...
 
struct  call_expr
 This struct specifies the call_expr node. More...
 
struct  aggr_init_expr
 AGGR_INIT_EXPRs have a variably-sized representation similar to that of CALL_EXPRs. More...
 
struct  gimple_call
 This struct specifies the gimple_call node. More...
 
struct  case_label_expr
 This struct specifies the case_label_expr node. More...
 
struct  cast_expr
 This struct specifies the cast_expr node. More...
 
struct  type_pack_expansion
 Represents a type expression that will be expanded into a list of types when instantiated with one or more argument packs. More...
 
struct  expr_pack_expansion
 Represents an expression that will be expanded into a list of expressions when instantiated with one or more argument packs. More...
 
struct  complex_cst
 This struct specifies the complex_cst node. More...
 
struct  complex_type
 struct definition of the complex_type tree node. More...
 
struct  gimple_cond
 This struct specifies the gimple_cond node. More...
 
struct  const_decl
 struct definition of the const_decl tree node. More...
 
struct  constructor
 Constructor: return an aggregate value made from specified components. More...
 
struct  enumeral_type
 struct definition of the integer_type tree node. More...
 
struct  expr_stmt
 This struct represent a statement expression. More...
 
struct  field_decl
 struct definition of the field_decl tree node. More...
 
struct  function_decl
 struct definition of the function_decl tree node. More...
 
struct  function_type
 struct definition of the function_type tree node. More...
 
struct  gimple_assign
 This struct specifies the gimple_assign node (GCC 4.3 tree node). More...
 
struct  gimple_nop
 
struct  gimple_goto
 This struct specifies the gimple_goto node. More...
 
struct  handler
 A HANDLER wraps a catch handler for the HANDLER_TYPE. More...
 
struct  identifier_node
 struct definition of the function_decl tree node. More...
 
struct  integer_cst
 This struct specifies the integer_cst node. More...
 
struct  integer_type
 struct definition of the integer_type tree node. More...
 
struct  gimple_label
 This struct specifies the gimple_label node. More...
 
struct  method_type
 struct definition of the method_type tree node. More...
 
struct  namespace_decl
 struct definition of the label_decl tree node. More...
 
struct  overload
 This struct represents a list-like node for chaining overloading candidates. More...
 
struct  parm_decl
 struct definition of the parm_decl tree node. More...
 
struct  gimple_phi
 This struct specifies the gimple_phi node. More...
 
struct  gimple_predict
 This struct specifies a hint for branch prediction. More...
 
struct  pointer_type
 struct definition of the pointer_type tree node. More...
 
struct  real_cst
 This struct specifies the real_cst node. More...
 
struct  real_type
 struct definition of the real_type tree node. More...
 
struct  record_type
 struct definition of the record_type tree node. More...
 
struct  reference_type
 struct definition of the reference_type tree node. More...
 
struct  result_decl
 struct definition of the result_decl tree node. More...
 
struct  gimple_resx
 
struct  gimple_return
 This struct specifies the gimple_return node. More...
 
struct  return_stmt
 This struct represent a 'return' statement. More...
 
struct  scope_ref
 This struct specifies reference to particular overloaded struct method The tree walker structure of this node is: #(TOK_SCOPE_REF) More...
 
struct  ssa_name
 This struct specifies the ssa_name node. More...
 
struct  statement_list
 This struct specifies the statement_list node. More...
 
struct  string_cst
 This struct specifies the string_cst node. More...
 
struct  gimple_switch
 GIMPLE_SWITCH <INDEX, DEFAULT_LAB, LAB1, ..., LABN> represents the multiway branch: More...
 
struct  target_expr
 This struct implements the target_expr node. More...
 
struct  target_mem_ref
 Low-level memory addressing. More...
 
struct  target_mem_ref461
 Low-level memory addressing. More...
 
struct  template_decl
 struct definition of the template_decl tree node. More...
 
struct  template_parm_index
 
struct  type_argument_pack
 Represents an argument pack of types (or templates). More...
 
struct  nontype_argument_pack
 
struct  tree_list
 This struct specifies the tree_list node. More...
 
struct  tree_vec
 This struct specifies the tree_vec node. More...
 
struct  try_block
 This struct represents a try-block statement. More...
 
struct  type_decl
 struct definition of the type_decl tree node. More...
 
struct  union_type
 struct definition of the union_type tree node. More...
 
struct  var_decl
 struct definition of the label_decl tree node. More...
 
struct  vector_cst
 This struct specifies the vector_cst node. More...
 
struct  vector_type
 struct definition of the vector_type tree node. More...
 
struct  lut_expr
 This struct specifies the lut_expr node. More...
 

Macros

#define GET_KIND_TEXT(meth)
 Macro which defines the get_kind_text function that returns the parameter as a string. More...
 
#define NON_LEAF_TREE_NODES
 
#define VISITED_OBJ_SEQ1   NON_LEAF_TREE_NODES UNARY_EXPRESSION_TREE_NODES BINARY_EXPRESSION_TREE_NODES TERNARY_EXPRESSION_TREE_NODES
 sequence of all objects More...
 
#define VISITED_OBJ_SEQ2
 
#define OBJ_SPECIALIZED_SEQ
 sequence of obj that have to be specialized More...
 
#define OBJ_NOT_SPECIALIZED_SEQ
 
#define GET_NODE(t)
 Macro used to hide implementation details when accessing a tree_node from another tree_node. More...
 
#define GET_CONST_NODE(t)
 
#define GET_INDEX_NODE(t)   (GET_NODE(t))->index
 Macro used to hide implementation details when accessing a tree_node from another tree_node. More...
 
#define GET_INDEX_CONST_NODE(t)   (GET_CONST_NODE(t))->index
 
#define CASE_UNARY_EXPRESSION
 This macro collects all case labels for unary_expr objects. More...
 
#define CASE_NON_ADDR_UNARY_EXPRESSION
 This macro collects all case labels for unary_expr objects. More...
 
#define CASE_BINARY_EXPRESSION
 This macro collects all case labels for binary_expr objects. More...
 
#define CASE_TERNARY_EXPRESSION
 This macro collects all case labels for ternary_expr objects. More...
 
#define CASE_QUATERNARY_EXPRESSION
 This macro collects all case labels for quaternary_expr objects. More...
 
#define CASE_TYPE_NODES
 This macro collects all case labels for type objects. More...
 
#define CASE_PRAGMA_NODES
 This macro collects all case labels for pragma objects. More...
 
#define CASE_FAKE_NODES
 This macro collects all case labels for fake or empty nodes. More...
 
#define CASE_CPP_NODES
 This macro collects all case labels for cpp nodes. More...
 
#define CASE_DECL_NODES
 NOTE that cast_expr is a unary expression but it could not be included in the CASE_UNARY_EXPRESSION because the operand could be null. More...
 
#define CASE_CST_NODES
 This macro collects all case labels for cast nodes. More...
 
#define CASE_GIMPLE_NODES
 This macro collects all cases labels for gimple nodes. More...
 
#define CREATE_TREE_NODE_CLASS(class_name, superclass)
 macro to create simple tree classes More...
 

Typedefs

using tree_nodeRef = refcount< tree_node >
 RefCount type definition of the tree_node class structure. More...
 
using tree_nodeConstRef = refcount< const tree_node >
 
using PointToSolutionRef = refcount< PointToSolution >
 

Functions

 CREATE_TREE_NODE_CLASS (abs_expr, unary_expr)
 This struct specifies the abs_expr node. More...
 
 CREATE_TREE_NODE_CLASS (addr_expr, unary_expr)
 This struct specifies the addr_expr node. More...
 
 CREATE_TREE_NODE_CLASS (array_range_ref, quaternary_expr)
 struct describing an array range. More...
 
 CREATE_TREE_NODE_CLASS (array_ref, quaternary_expr)
 Array indexing. More...
 
 CREATE_TREE_NODE_CLASS (alignof_expr, unary_expr)
 This struct represent alignof_expr. More...
 
 CREATE_TREE_NODE_CLASS (arrow_expr, unary_expr)
 This struct represent arrow_expr. More...
 
 CREATE_TREE_NODE_CLASS (assert_expr, binary_expr)
 This struct specifies the assert_expr node. More...
 
 CREATE_TREE_NODE_CLASS (bit_and_expr, binary_expr)
 This struct specifies the bit_and_expr node. More...
 
 CREATE_TREE_NODE_CLASS (bit_field_ref, ternary_expr)
 This struct specifies the bit_field_ref node. More...
 
 CREATE_TREE_NODE_CLASS (bit_ior_expr, binary_expr)
 This struct specifies the bit_ior_expr node. More...
 
 CREATE_TREE_NODE_CLASS (bit_ior_concat_expr, ternary_expr)
 This struct specifies a concatenation between in1 and in2 using in3 bits. More...
 
 CREATE_TREE_NODE_CLASS (bit_not_expr, unary_expr)
 This struct specifies the bit_not_expr node. More...
 
 CREATE_TREE_NODE_CLASS (bit_xor_expr, binary_expr)
 This struct specifies the bit_xor_expr node. More...
 
 CREATE_TREE_NODE_CLASS (boolean_type, type_node)
 struct definition of the boolean_type tree node. More...
 
 CREATE_TREE_NODE_CLASS (buffer_ref, unary_expr)
 This struct specifies the buffer_ref node. More...
 
 CREATE_TREE_NODE_CLASS (card_expr, unary_expr)
 This struct specifies the card_expr node. More...
 
 CREATE_TREE_NODE_CLASS (catch_expr, binary_expr)
 This struct specifies the catch_expr node. More...
 
 CREATE_TREE_NODE_CLASS (ceil_div_expr, binary_expr)
 This struct specifies the ceil_div_expr node. More...
 
 CREATE_TREE_NODE_CLASS (ceil_mod_expr, binary_expr)
 This struct specifies the ceil_mod_expr node. More...
 
 CREATE_TREE_NODE_CLASS (CharType, type_node)
 struct definition of the CharType tree node. More...
 
 CREATE_TREE_NODE_CLASS (nullptr_type, type_node)
 The C++ decltype(nullptr) type. More...
 
 CREATE_TREE_NODE_CLASS (cleanup_point_expr, unary_expr)
 This struct specifies the cleanup_point_expr node. More...
 
 CREATE_TREE_NODE_CLASS (complex_expr, binary_expr)
 This struct specifies the complex_expr node. More...
 
 CREATE_TREE_NODE_CLASS (component_ref, ternary_expr)
 Value is structure or union component. More...
 
 CREATE_TREE_NODE_CLASS (compound_expr, binary_expr)
 This struct specifies the compound_expr node. More...
 
 CREATE_TREE_NODE_CLASS (cond_expr, ternary_expr)
 This struct specifies the cond_expr node. More...
 
 CREATE_TREE_NODE_CLASS (conj_expr, unary_expr)
 This struct specifies the conj_expr node. More...
 
 CREATE_TREE_NODE_CLASS (convert_expr, unary_expr)
 This struct specifies the convert_expr node. More...
 
 CREATE_TREE_NODE_CLASS (ctor_initializer, tree_node)
 CTOR_INITIALIZER is a placeholder in template code for a call to setup_vtbl_pointer (and appears in all functions, not just ctors) More...
 
 CREATE_TREE_NODE_CLASS (eh_filter_expr, binary_expr)
 This struct specifies the eh_filter_expr node. More...
 
 CREATE_TREE_NODE_CLASS (eq_expr, binary_expr)
 This struct specifies the eq_expr node. More...
 
 CREATE_TREE_NODE_CLASS (exact_div_expr, binary_expr)
 This struct specifies the exact_div_expr node. More...
 
 CREATE_TREE_NODE_CLASS (exit_expr, unary_expr)
 This struct specifies the exit_expr node. More...
 
 CREATE_TREE_NODE_CLASS (fdesc_expr, binary_expr)
 This struct specifies the fdesc_expr node. More...
 
 CREATE_TREE_NODE_CLASS (fix_ceil_expr, unary_expr)
 This struct specifies the fix_ceil_expr node. More...
 
 CREATE_TREE_NODE_CLASS (fix_floor_expr, unary_expr)
 This struct specifies the fix_floor_expr node. More...
 
 CREATE_TREE_NODE_CLASS (fix_round_expr, unary_expr)
 This struct specifies the fix_round_expr node. More...
 
 CREATE_TREE_NODE_CLASS (fix_trunc_expr, unary_expr)
 This struct specifies the fix_trunc_expr node. More...
 
 CREATE_TREE_NODE_CLASS (float_expr, unary_expr)
 This struct specifies the float_expr node. More...
 
 CREATE_TREE_NODE_CLASS (floor_div_expr, binary_expr)
 This struct specifies the floor_div_expr node. More...
 
 CREATE_TREE_NODE_CLASS (floor_mod_expr, binary_expr)
 This struct specifies the floor_mod_expr node. More...
 
 CREATE_TREE_NODE_CLASS (ge_expr, binary_expr)
 This struct specifies the ge_expr node. More...
 
 CREATE_TREE_NODE_CLASS (goto_subroutine, binary_expr)
 This struct specifies the goto_subroutine node. More...
 
 CREATE_TREE_NODE_CLASS (gt_expr, binary_expr)
 This struct specifies the gt_expr node. More...
 
 CREATE_TREE_NODE_CLASS (imagpart_expr, unary_expr)
 This struct specifies the imagpart_expr node. More...
 
 CREATE_TREE_NODE_CLASS (indirect_ref, unary_expr)
 This struct specifies the indirect_ref node. More...
 
 CREATE_TREE_NODE_CLASS (misaligned_indirect_ref, unary_expr)
 This struct specifies the misaligned version of the indirect_ref node. More...
 
 CREATE_TREE_NODE_CLASS (in_expr, binary_expr)
 This struct specifies the in_expr node. More...
 
 CREATE_TREE_NODE_CLASS (init_expr, binary_expr)
 This struct specifies the init_expr node. More...
 
 CREATE_TREE_NODE_CLASS (label_decl, decl_node)
 struct definition of the label_decl tree node. More...
 
 CREATE_TREE_NODE_CLASS (lang_type, type_node)
 struct definition of the lang_type tree node. More...
 
 CREATE_TREE_NODE_CLASS (le_expr, binary_expr)
 This struct specifies the le_expr node. More...
 
 CREATE_TREE_NODE_CLASS (loop_expr, unary_expr)
 A loop. More...
 
 CREATE_TREE_NODE_CLASS (lrotate_expr, binary_expr)
 This struct specifies the lrotate_expr node. More...
 
 CREATE_TREE_NODE_CLASS (lshift_expr, binary_expr)
 This struct specifies the lshift_expr node. More...
 
 CREATE_TREE_NODE_CLASS (lt_expr, binary_expr)
 This struct specifies the lt_expr node. More...
 
 CREATE_TREE_NODE_CLASS (ltgt_expr, binary_expr)
 This struct specifies the ltgt_expr node. More...
 
 CREATE_TREE_NODE_CLASS (max_expr, binary_expr)
 This struct specifies the max_expr node. More...
 
 CREATE_TREE_NODE_CLASS (mem_ref, binary_expr)
 Memory addressing. More...
 
 CREATE_TREE_NODE_CLASS (min_expr, binary_expr)
 This struct specifies the min_expr node. More...
 
 CREATE_TREE_NODE_CLASS (minus_expr, binary_expr)
 This struct specifies the minus_expr node. More...
 
 CREATE_TREE_NODE_CLASS (modify_expr, binary_expr)
 This struct specifies the modify_expr node. More...
 
 CREATE_TREE_NODE_CLASS (modop_expr, expr_node)
 This struct represent one of the bunch of tree codes for the initial, superficial parsing of templates. More...
 
 CREATE_TREE_NODE_CLASS (mult_expr, binary_expr)
 This struct specifies the mult_expr node. More...
 
 CREATE_TREE_NODE_CLASS (mult_highpart_expr, binary_expr)
 This struct specifies the mult_highpart_expr node. More...
 
 CREATE_TREE_NODE_CLASS (ne_expr, binary_expr)
 This struct specifies the ne_expr node. More...
 
 CREATE_TREE_NODE_CLASS (negate_expr, unary_expr)
 This struct specifies the negate_expr node. More...
 
 CREATE_TREE_NODE_CLASS (new_expr, expr_node)
 This struct represent a 'new' expression. More...
 
 CREATE_TREE_NODE_CLASS (non_lvalue_expr, unary_expr)
 This struct specifies the non_lvalue_expr node. More...
 
 CREATE_TREE_NODE_CLASS (nop_expr, unary_expr)
 This struct specifies the nop_expr node. More...
 
 CREATE_TREE_NODE_CLASS (obj_type_ref, ternary_expr)
 Used to represent lookup of runtime type dependent data. More...
 
 CREATE_TREE_NODE_CLASS (offset_type, type_node)
 struct definition of the offset_type tree node. More...
 
 CREATE_TREE_NODE_CLASS (ordered_expr, binary_expr)
 This struct specifies the ordered_expr node. More...
 
 CREATE_TREE_NODE_CLASS (placeholder_expr, expr_node)
 This struct specifies the placeholder_expr node. More...
 
 CREATE_TREE_NODE_CLASS (plus_expr, binary_expr)
 This struct specifies the plus_expr node. More...
 
 CREATE_TREE_NODE_CLASS (pointer_plus_expr, binary_expr)
 Pointer addition. More...
 
 CREATE_TREE_NODE_CLASS (postdecrement_expr, binary_expr)
 This struct specifies the postdecrement_expr node. More...
 
 CREATE_TREE_NODE_CLASS (postincrement_expr, binary_expr)
 This struct specifies the postincrement_expr node. More...
 
 CREATE_TREE_NODE_CLASS (predecrement_expr, binary_expr)
 This struct specifies the predecrement_expr node. More...
 
 CREATE_TREE_NODE_CLASS (preincrement_expr, binary_expr)
 This struct specifies the preincrement_expr node. More...
 
 CREATE_TREE_NODE_CLASS (qual_union_type, type_node)
 struct definition of the qual_union_type tree node. More...
 
 CREATE_TREE_NODE_CLASS (range_expr, binary_expr)
 This struct specifies the range_expr node. More...
 
 CREATE_TREE_NODE_CLASS (paren_expr, unary_expr)
 Represents a re-association barrier for floating point expressions like explicit parenthesis in fortran. More...
 
 CREATE_TREE_NODE_CLASS (rdiv_expr, binary_expr)
 This struct specifies the rdiv_expr node. More...
 
 CREATE_TREE_NODE_CLASS (realpart_expr, unary_expr)
 This struct specifies the realpart_expr node. More...
 
 CREATE_TREE_NODE_CLASS (reduc_max_expr, unary_expr)
 Reduction operations. More...
 
 CREATE_TREE_NODE_CLASS (reduc_min_expr, unary_expr)
 
 CREATE_TREE_NODE_CLASS (reduc_plus_expr, unary_expr)
 
 CREATE_TREE_NODE_CLASS (reference_expr, unary_expr)
 This struct specifies the reference_expr node. More...
 
 CREATE_TREE_NODE_CLASS (reinterpret_cast_expr, unary_expr)
 This struct represent one of tree codes for the initial, superficial parsing of templates. More...
 
 CREATE_TREE_NODE_CLASS (round_div_expr, binary_expr)
 This struct specifies the round_div_expr node. More...
 
 CREATE_TREE_NODE_CLASS (round_mod_expr, binary_expr)
 This struct specifies the round_mod_expr node. More...
 
 CREATE_TREE_NODE_CLASS (rrotate_expr, binary_expr)
 This struct specifies the rrotate_expr node. More...
 
 CREATE_TREE_NODE_CLASS (rshift_expr, binary_expr)
 This struct specifies the rshift_expr node. More...
 
 CREATE_TREE_NODE_CLASS (save_expr, ternary_expr)
 This struct specifies the save_expr node. More...
 
 CREATE_TREE_NODE_CLASS (set_le_expr, binary_expr)
 This struct specifies the set_le_expr node. More...
 
 CREATE_TREE_NODE_CLASS (set_type, type_node)
 struct definition of the set_type tree node. More...
 
 CREATE_TREE_NODE_CLASS (sizeof_expr, unary_expr)
 This struct specifies the sizeof_expr node. More...
 
 CREATE_TREE_NODE_CLASS (static_cast_expr, unary_expr)
 This struct specifies the static_cast_expr node. More...
 
 CREATE_TREE_NODE_CLASS (template_id_expr, expr_node)
 This struct represents a template identifier. More...
 
 CREATE_TREE_NODE_CLASS (template_type_parm, type_node)
 struct definition of the template_type_parm tree node. More...
 
 CREATE_TREE_NODE_CLASS (ternary_plus_expr, ternary_expr)
 This struct specifies the a + b + c node. More...
 
 CREATE_TREE_NODE_CLASS (ternary_pm_expr, ternary_expr)
 This struct specifies the a + b - c node. More...
 
 CREATE_TREE_NODE_CLASS (ternary_mp_expr, ternary_expr)
 This struct specifies the a - b + c node. More...
 
 CREATE_TREE_NODE_CLASS (ternary_mm_expr, ternary_expr)
 This struct specifies the a - b - c node. More...
 
 CREATE_TREE_NODE_CLASS (throw_expr, unary_expr)
 This struct represents a throw expression. More...
 
 CREATE_TREE_NODE_CLASS (trait_expr, tree_node)
 Represents a trait expression during template expansion. More...
 
 CREATE_TREE_NODE_CLASS (translation_unit_decl, decl_node)
 struct definition of the translation_unit_decl tree node. More...
 
 CREATE_TREE_NODE_CLASS (trunc_div_expr, binary_expr)
 This struct specifies the trunc_div_expr node. More...
 
 CREATE_TREE_NODE_CLASS (trunc_mod_expr, binary_expr)
 This struct specifies the trunc_mod_expr node. More...
 
 CREATE_TREE_NODE_CLASS (truth_and_expr, binary_expr)
 This struct specifies the truth_and_expr node. More...
 
 CREATE_TREE_NODE_CLASS (truth_andif_expr, binary_expr)
 This struct specifies the truth_andif_expr node. More...
 
 CREATE_TREE_NODE_CLASS (truth_not_expr, unary_expr)
 This struct specifies the truth_not_expr node. More...
 
 CREATE_TREE_NODE_CLASS (truth_or_expr, binary_expr)
 This struct specifies the truth_or_expr node. More...
 
 CREATE_TREE_NODE_CLASS (truth_orif_expr, binary_expr)
 This struct specifies the truth_orif_expr node. More...
 
 CREATE_TREE_NODE_CLASS (truth_xor_expr, binary_expr)
 This struct specifies the truth_xor_expr node. More...
 
 CREATE_TREE_NODE_CLASS (try_catch_expr, binary_expr)
 This struct specifies the try_catch_expr node. More...
 
 CREATE_TREE_NODE_CLASS (try_finally, binary_expr)
 This struct specifies the try_finally node. More...
 
 CREATE_TREE_NODE_CLASS (typename_type, type_node)
 struct definition of the typename_type tree node. More...
 
 CREATE_TREE_NODE_CLASS (uneq_expr, binary_expr)
 This struct specifies the uneq_expr node. More...
 
 CREATE_TREE_NODE_CLASS (unge_expr, binary_expr)
 This struct specifies the unge_expr node. More...
 
 CREATE_TREE_NODE_CLASS (ungt_expr, binary_expr)
 This struct specifies the ungt_expr node. More...
 
 CREATE_TREE_NODE_CLASS (unle_expr, binary_expr)
 This struct specifies the unle_expr node. More...
 
 CREATE_TREE_NODE_CLASS (unlt_expr, binary_expr)
 This struct specifies the unlt_expr node. More...
 
 CREATE_TREE_NODE_CLASS (unordered_expr, binary_expr)
 This struct specifies the unordered_expr node. More...
 
 CREATE_TREE_NODE_CLASS (unsave_expr, unary_expr)
 This struct specifies the unsave_expr node. More...
 
 CREATE_TREE_NODE_CLASS (using_decl, decl_node)
 A using declaration. More...
 
 CREATE_TREE_NODE_CLASS (va_arg_expr, unary_expr)
 This struct specifies the va_arg_expr node. More...
 
 CREATE_TREE_NODE_CLASS (dot_prod_expr, ternary_expr)
 Widening dot-product. More...
 
 CREATE_TREE_NODE_CLASS (vec_cond_expr, ternary_expr)
 Vector conditional expression. More...
 
 CREATE_TREE_NODE_CLASS (vec_perm_expr, ternary_expr)
 Vector permutation expression. More...
 
 CREATE_TREE_NODE_CLASS (vec_lshift_expr, binary_expr)
 Whole vector left/right shift in bits. More...
 
 CREATE_TREE_NODE_CLASS (vec_rshift_expr, binary_expr)
 
 CREATE_TREE_NODE_CLASS (widen_mult_hi_expr, binary_expr)
 Widening vector multiplication. More...
 
 CREATE_TREE_NODE_CLASS (widen_mult_lo_expr, binary_expr)
 
 CREATE_TREE_NODE_CLASS (vec_unpack_hi_expr, unary_expr)
 Unpack (extract and promote/widen) the high/low elements of the input vector into the output vector. More...
 
 CREATE_TREE_NODE_CLASS (vec_unpack_lo_expr, unary_expr)
 
 CREATE_TREE_NODE_CLASS (vec_unpack_float_hi_expr, unary_expr)
 Unpack (extract) the high/low elements of the input vector, convert fixed point values to floating point and widen elements into the output vector. More...
 
 CREATE_TREE_NODE_CLASS (vec_unpack_float_lo_expr, unary_expr)
 
 CREATE_TREE_NODE_CLASS (vec_pack_trunc_expr, binary_expr)
 Pack (demote/narrow and merge) the elements of the two input vectors into the output vector using truncation/saturation. More...
 
 CREATE_TREE_NODE_CLASS (vec_pack_sat_expr, binary_expr)
 
 CREATE_TREE_NODE_CLASS (vec_pack_fix_trunc_expr, binary_expr)
 Convert floating point values of the two input vectors to integer and pack (narrow and merge) the elements into the output vector. More...
 
 CREATE_TREE_NODE_CLASS (vec_extracteven_expr, binary_expr)
 Extract even/odd fields from vectors. More...
 
 CREATE_TREE_NODE_CLASS (vec_extractodd_expr, binary_expr)
 
 CREATE_TREE_NODE_CLASS (vec_interleavehigh_expr, binary_expr)
 Merge input vectors interleaving their fields. More...
 
 CREATE_TREE_NODE_CLASS (vec_interleavelow_expr, binary_expr)
 
 CREATE_TREE_NODE_CLASS (vec_new_expr, expr_node)
 This struct represents a vector new expression. More...
 
 CREATE_TREE_NODE_CLASS (void_cst, cst_node)
 VOID_CST node. More...
 
 CREATE_TREE_NODE_CLASS (view_convert_expr, unary_expr)
 This struct specifies the view_convert_expr node. More...
 
 CREATE_TREE_NODE_CLASS (void_type, type_node)
 struct definition of the void_type tree node. More...
 
 CREATE_TREE_NODE_CLASS (vtable_ref, ternary_expr)
 This struct specifies the vtable_ref node. More...
 
 CREATE_TREE_NODE_CLASS (with_cleanup_expr, ternary_expr)
 This struct specifies the with_cleanup_expr node. More...
 
 CREATE_TREE_NODE_CLASS (with_size_expr, binary_expr)
 Records the size for an expression of variable size type. More...
 
 CREATE_TREE_NODE_CLASS (widen_sum_expr, binary_expr)
 Widening summation. More...
 
 CREATE_TREE_NODE_CLASS (widen_mult_expr, binary_expr)
 Widening multiplication. More...
 
 CREATE_TREE_NODE_CLASS (extract_bit_expr, binary_expr)
 extract_bit_expr extracts a bit value from a SSA/integer const op0 is the SSA variable op1 is the bit position return a Boolean value More...
 
 CREATE_TREE_NODE_CLASS (sat_plus_expr, binary_expr)
 This struct specifies the sat_plus_expr node. More...
 
 CREATE_TREE_NODE_CLASS (sat_minus_expr, binary_expr)
 This struct specifies the sat_minus_expr node. More...
 
 CREATE_TREE_NODE_CLASS (fshl_expr, ternary_expr)
 This struct specifies the fshl_expr node. More...
 
 CREATE_TREE_NODE_CLASS (fshr_expr, ternary_expr)
 This struct specifies the fshr_expr node. More...
 
 CREATE_TREE_NODE_CLASS (extractvalue_expr, binary_expr)
 This struct specifies the extractvalue_expr node. More...
 
 CREATE_TREE_NODE_CLASS (insertvalue_expr, ternary_expr)
 This struct specifies the insertvalue_expr node. More...
 
 CREATE_TREE_NODE_CLASS (extractelement_expr, binary_expr)
 This struct specifies the extractelement_expr node. More...
 
 CREATE_TREE_NODE_CLASS (insertelement_expr, ternary_expr)
 This struct specifies the insertelement_expr node. More...
 
 CREATE_TREE_NODE_CLASS (frem_expr, binary_expr)
 This struct specifies the frem node. More...
 
forward declarations

Autoheader include

 REF_FORWARD_DECL (bloc)
 
 REF_FORWARD_DECL (tree_manager)
 
 CONSTREF_FORWARD_DECL (tree_node)
 
 REF_FORWARD_DECL (tree_node)
 
 REF_FORWARD_DECL (Range)
 

Detailed Description

Classes specification of the tree_node data structures.

Classes used to described the tree nodes imported from the raw file. The first version of this code is due to Fabrizio Ferrandi, Katia Turati, Giacomo Galbiati

Author
Fabrizio Ferrandi fabri.nosp@m.zio..nosp@m.ferra.nosp@m.ndi@.nosp@m.polim.nosp@m.i.it
Marco Lattuada lattu.nosp@m.ada@.nosp@m.elet..nosp@m.poli.nosp@m.mi.it $Revision$ $Date$ Last modified by $Author$

Definition in file tree_node.hpp.

Macro Definition Documentation

◆ CASE_BINARY_EXPRESSION

#define CASE_BINARY_EXPRESSION

This macro collects all case labels for binary_expr objects.

Definition at line 463 of file tree_node.hpp.

Referenced by tree_helper::AccessedMaximumBitsize(), tree_helper::AccessedMinimunBitsize(), determine_memory_accesses::analyze_node(), operations_cfg_computation::build_operation_recursive(), CallGraphManager::call_graph_computation_recursive(), BehavioralHelper::CanBeSpeculated(), tree_helper::CGetPointedType(), tree_helper::CGetType(), Vectorize::ClassifyTreeNode(), tree_manager::collapse_into(), tree_helper::compute_ssa_uses_rec_ptr(), tree_helper::ComputeSsaUses(), tree_helper::CountPointers(), tree_manipulation::create_binary_operation(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_unary_operation(), tree_manager::erase_usage_info(), UnaryOpNode::eval(), BehavioralHelper::get_attributes(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_intermediate_var(), tree_helper::get_pointed_type(), tree_helper::get_required_values(), tree_helper::get_used_variables(), tree_helper::GetBaseVariable(), tree_helper::GetFunctionReturnType(), BehavioralHelper::GetInit(), application_manager::GetProducedValue(), tree_helper::GetTypeName(), GimpleWriter::GimpleWriter(), MemoryInitializationWriterBase::GoUp(), tree_manager::insert_usage_info(), BehavioralHelper::is_a_constant(), tree_helper::IsConstant(), tree_helper::IsPackedType(), tree_helper::IsVariableType(), tree_helper::LastStatement(), CallGraphBuiltinCall::lookForBuiltinCall(), Vectorize::LookForScalar(), BBWriter::operator()(), BehavioralHelper::print_forward_declaration(), BehavioralHelper::print_type_declaration(), BehavioralHelper::print_vertex(), BehavioralHelper::PrintConstant(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), MemoryInitializationCWriter::Process(), MemoryInitializationWriter::Process(), parm2ssa::recursive_analysis(), string_cst_fix::recursive_analysis(), hls_div_cg_ext::recursive_examinate(), VarDeclFix::recursive_examinate(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_helper::RecursiveGetTypesToBeDeclared(), VarComputation::RecursivelyAnalyze(), tree_manager::RecursiveReplaceTreeNode(), tree_helper::Size(), BitLatticeManipulator::Size(), Vectorize::Transform(), and fu_binding::write_init().

◆ CASE_CPP_NODES

#define CASE_CPP_NODES
Value:
baselink_K: \
case ctor_initializer_K: \
case do_stmt_K: \
case expr_stmt_K: \
case if_stmt_K: \
case for_stmt_K: \
case handler_K: \
case modop_expr_K: \
case new_expr_K: \
case overload_K: \
case return_stmt_K: \
case scope_ref_K: \
case template_id_expr_K: \
case template_parm_index_K: \
case trait_expr_K: \
case try_block_K: \
case vec_new_expr_K: \
case while_stmt_K: \
case nontype_argument_pack_K: \
case cast_expr_K: \
case expr_pack_expansion_K

This macro collects all case labels for cpp nodes.

Definition at line 644 of file tree_node.hpp.

Referenced by tree_helper::AccessedMaximumBitsize(), tree_helper::AccessedMinimunBitsize(), tree_helper::AllocatedMemorySize(), determine_memory_accesses::analyze_node(), Bit_Value::backward_transfer(), operations_cfg_computation::build_operation_recursive(), CallGraphManager::call_graph_computation_recursive(), BehavioralHelper::CanBeSpeculated(), tree_helper::CGetPointedType(), tree_helper::CGetType(), check_for_simple_pointer_arithmetic(), simple_code_motion::CheckMovable(), Vectorize::ClassifyTreeNode(), tree_manager::collapse_into(), tree_helper::compute_ssa_uses_rec_ptr(), tree_helper::ComputeSsaUses(), tree_helper::CountPointers(), tree_manipulation::create_binary_operation(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_unary_operation(), mux_connection_binding::determine_connection(), IR_lowering::division_by_a_constant(), tree_manager::erase_usage_info(), UnaryOpNode::eval(), BinaryOpNode::evaluate(), Bit_Value::forward_transfer(), BehavioralHelper::get_attributes(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_intermediate_var(), tree_helper::get_pointed_type(), tree_helper::get_required_values(), tree_helper::get_used_variables(), tree_helper::GetBaseVariable(), tree_helper::GetFunctionReturnType(), BehavioralHelper::GetInit(), application_manager::GetProducedValue(), tree_helper::GetTypeName(), GimpleWriter::GimpleWriter(), MemoryInitializationWriterBase::GoUp(), tree_manager::insert_usage_info(), BehavioralHelper::is_a_constant(), tree_helper::is_packed_access(), tree_helper::IsConstant(), tree_helper::IsPackedType(), tree_helper::IsPointerResolved(), tree_helper::IsVariableType(), tree_helper::LastStatement(), CallGraphBuiltinCall::lookForBuiltinCall(), Vectorize::LookForScalar(), Range::makeSatisfyingCmpRegion(), tree_helper::op_symbol(), BBWriter::operator()(), SymbRange::print(), BehavioralHelper::print_forward_declaration(), BehavioralHelper::print_type_declaration(), BehavioralHelper::print_vertex(), BehavioralHelper::PrintConstant(), BehavioralHelper::PrintInit(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), MemoryInitializationCWriter::Process(), MemoryInitializationWriter::Process(), parm2ssa::recursive_analysis(), string_cst_fix::recursive_analysis(), hls_div_cg_ext::recursive_examinate(), VarDeclFix::recursive_examinate(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_helper::RecursiveGetTypesToBeDeclared(), VarComputation::RecursivelyAnalyze(), tree_manager::RecursiveReplaceTreeNode(), tree_helper::Size(), BitLatticeManipulator::Size(), SymbRange::solveFuture(), Vectorize::Transform(), and fu_binding::write_init().

◆ CASE_CST_NODES

#define CASE_CST_NODES
Value:
complex_cst_K: \
case integer_cst_K: \
case real_cst_K: \
case string_cst_K: \
case vector_cst_K: \
case void_cst_K

This macro collects all case labels for cast nodes.

Definition at line 689 of file tree_node.hpp.

Referenced by tree_helper::AccessedMaximumBitsize(), tree_helper::AccessedMinimunBitsize(), Bit_Value::backward_transfer(), BehavioralHelper::CanBeSpeculated(), tree_helper::CGetPointedType(), check_for_simple_pointer_arithmetic(), simple_code_motion::CheckMovable(), Vectorize::ClassifyTreeNode(), tree_helper::CountPointers(), tree_manipulation::create_binary_operation(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_unary_operation(), IR_lowering::division_by_a_constant(), UnaryOpNode::eval(), BinaryOpNode::evaluate(), BehavioralHelper::get_attributes(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_intermediate_var(), tree_helper::get_pointed_type(), tree_helper::GetFunctionReturnType(), BehavioralHelper::GetInit(), application_manager::GetProducedValue(), tree_helper::GetTypeName(), GimpleWriter::GimpleWriter(), MemoryInitializationWriterBase::GoUp(), tree_helper::is_packed_access(), tree_helper::IsConstant(), tree_helper::IsPackedType(), tree_helper::LastStatement(), Vectorize::LookForScalar(), Range::makeSatisfyingCmpRegion(), tree_helper::op_symbol(), BBWriter::operator()(), SymbRange::print(), BehavioralHelper::print_forward_declaration(), BehavioralHelper::print_type_declaration(), BehavioralHelper::print_vertex(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), MemoryInitializationCWriter::Process(), MemoryInitializationWriter::Process(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_helper::RecursiveGetTypesToBeDeclared(), BitLatticeManipulator::Size(), SymbRange::solveFuture(), and Vectorize::Transform().

◆ CASE_DECL_NODES

#define CASE_DECL_NODES
Value:
const_decl_K: \
case field_decl_K: \
case function_decl_K: \
case label_decl_K: \
case namespace_decl_K: \
case parm_decl_K: \
case result_decl_K: \
case translation_unit_decl_K: \
case type_decl_K: \
case using_decl_K: \
case var_decl_K: \
case template_decl_K

NOTE that cast_expr is a unary expression but it could not be included in the CASE_UNARY_EXPRESSION because the operand could be null.

This macro collects all case labels for declaration nodes

Definition at line 672 of file tree_node.hpp.

Referenced by determine_memory_accesses::analyze_node(), Bit_Value::backward_transfer(), operations_cfg_computation::build_operation_recursive(), BehavioralHelper::CanBeSpeculated(), tree_helper::CGetPointedType(), tree_helper::CGetType(), simple_code_motion::CheckMovable(), tree_manipulation::create_binary_operation(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_unary_operation(), IR_lowering::division_by_a_constant(), UnaryOpNode::eval(), BinaryOpNode::evaluate(), Bit_Value::forward_transfer(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_intermediate_var(), application_manager::GetProducedValue(), tree_helper::GetTypeName(), GimpleWriter::GimpleWriter(), MemoryInitializationWriterBase::GoUp(), tree_helper::IsConstant(), tree_helper::IsPackedType(), tree_helper::LastStatement(), Vectorize::LookForScalar(), Range::makeSatisfyingCmpRegion(), tree_helper::op_symbol(), BBWriter::operator()(), SymbRange::print(), BehavioralHelper::print_forward_declaration(), BehavioralHelper::print_type_declaration(), BehavioralHelper::print_vertex(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), MemoryInitializationCWriter::Process(), MemoryInitializationWriter::Process(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_helper::RecursiveGetTypesToBeDeclared(), BitLatticeManipulator::Size(), SymbRange::solveFuture(), and Vectorize::Transform().

◆ CASE_FAKE_NODES

#define CASE_FAKE_NODES
Value:
last_tree_K: \
case none_K: \
case placeholder_expr_K: \
case tree_reindex_K

This macro collects all case labels for fake or empty nodes.

Definition at line 635 of file tree_node.hpp.

Referenced by tree_helper::AccessedMaximumBitsize(), tree_helper::AccessedMinimunBitsize(), tree_helper::AllocatedMemorySize(), determine_memory_accesses::analyze_node(), Bit_Value::backward_transfer(), operations_cfg_computation::build_operation_recursive(), CallGraphManager::call_graph_computation_recursive(), BehavioralHelper::CanBeSpeculated(), tree_helper::CGetPointedType(), tree_helper::CGetType(), check_for_simple_pointer_arithmetic(), simple_code_motion::CheckMovable(), Vectorize::ClassifyTreeNode(), tree_manager::collapse_into(), tree_helper::ComputeSsaUses(), tree_helper::CountPointers(), tree_manipulation::create_binary_operation(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ternary_operation(), tree_node_dup::create_tree_node(), tree_manipulation::create_unary_operation(), mux_connection_binding::determine_connection(), IR_lowering::division_by_a_constant(), tree_manager::erase_usage_info(), UnaryOpNode::eval(), BinaryOpNode::evaluate(), Bit_Value::forward_transfer(), BehavioralHelper::get_attributes(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_intermediate_var(), tree_helper::get_pointed_type(), tree_helper::get_required_values(), tree_helper::get_used_variables(), tree_helper::GetBaseVariable(), tree_helper::GetFunctionReturnType(), BehavioralHelper::GetInit(), application_manager::GetProducedValue(), GimpleWriter::GimpleWriter(), MemoryInitializationWriterBase::GoUp(), tree_manager::insert_usage_info(), BehavioralHelper::is_a_constant(), tree_helper::is_packed_access(), tree_helper::IsConstant(), tree_helper::IsPackedType(), tree_helper::IsPointerResolved(), tree_helper::IsVariableType(), Vectorize::LookForScalar(), Range::makeSatisfyingCmpRegion(), tree_helper::op_symbol(), BBWriter::operator()(), SymbRange::print(), BehavioralHelper::print_forward_declaration(), BehavioralHelper::print_type_declaration(), BehavioralHelper::print_vertex(), BehavioralHelper::PrintConstant(), BehavioralHelper::PrintInit(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), MemoryInitializationCWriter::Process(), MemoryInitializationWriter::Process(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_helper::RecursiveGetTypesToBeDeclared(), VarComputation::RecursivelyAnalyze(), tree_manager::RecursiveReplaceTreeNode(), tree_helper::Size(), SymbRange::solveFuture(), Vectorize::Transform(), and fu_binding::write_init().

◆ CASE_GIMPLE_NODES

#define CASE_GIMPLE_NODES
Value:
gimple_asm_K: \
case gimple_assign_K: \
case gimple_bind_K: \
case gimple_call_K: \
case gimple_cond_K: \
case gimple_for_K: \
case gimple_goto_K: \
case gimple_label_K: \
case gimple_multi_way_if_K: \
case gimple_nop_K: \
case gimple_phi_K: \
case gimple_pragma_K: \
case gimple_predict_K: \
case gimple_resx_K: \
case gimple_return_K: \
case gimple_switch_K: \
case gimple_while_K

This macro collects all cases labels for gimple nodes.

Definition at line 700 of file tree_node.hpp.

Referenced by tree_helper::AccessedMaximumBitsize(), tree_helper::AccessedMinimunBitsize(), tree_helper::AllocatedMemorySize(), determine_memory_accesses::analyze_node(), Bit_Value::backward_transfer(), BehavioralHelper::CanBeSpeculated(), tree_helper::CGetPointedType(), simple_code_motion::CheckMovable(), tree_helper::CountPointers(), tree_manipulation::create_binary_operation(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_unary_operation(), mux_connection_binding::determine_connection(), IR_lowering::division_by_a_constant(), UnaryOpNode::eval(), BinaryOpNode::evaluate(), Bit_Value::forward_transfer(), BehavioralHelper::get_attributes(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_intermediate_var(), tree_helper::get_pointed_type(), tree_helper::GetBaseVariable(), tree_helper::GetFunctionReturnType(), BehavioralHelper::GetInit(), tree_helper::GetTypeName(), GimpleWriter::GimpleWriter(), MemoryInitializationWriterBase::GoUp(), BehavioralHelper::is_a_constant(), tree_helper::is_packed_access(), tree_helper::IsConstant(), tree_helper::IsPackedType(), tree_helper::IsPointerResolved(), tree_helper::IsVariableType(), Vectorize::LookForScalar(), Range::makeSatisfyingCmpRegion(), tree_helper::op_symbol(), SymbRange::print(), BehavioralHelper::print_forward_declaration(), BehavioralHelper::print_type_declaration(), BehavioralHelper::PrintConstant(), BehavioralHelper::PrintInit(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), MemoryInitializationCWriter::Process(), MemoryInitializationWriter::Process(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_helper::RecursiveGetTypesToBeDeclared(), SymbRange::solveFuture(), Vectorize::Transform(), and fu_binding::write_init().

◆ CASE_NON_ADDR_UNARY_EXPRESSION

#define CASE_NON_ADDR_UNARY_EXPRESSION

This macro collects all case labels for unary_expr objects.

Its use it is quite simple: just add the following line in the switch statement case CASE_UNARY_EXPRESSION:

Definition at line 419 of file tree_node.hpp.

Referenced by BehavioralHelper::PrintNode().

◆ CASE_PRAGMA_NODES

#define CASE_PRAGMA_NODES
Value:
issue_pragma_K: \
case blackbox_pragma_K: \
case profiling_pragma_K: \
case statistical_profiling_K: \
case map_pragma_K: \
case call_hw_pragma_K: \
case call_point_hw_pragma_K: \
case omp_pragma_K: \
case null_node_K: \
case omp_atomic_pragma_K: \
case omp_critical_pragma_K: \
case omp_declare_simd_pragma_K: \
case omp_for_pragma_K: \
case omp_parallel_pragma_K: \
case omp_sections_pragma_K: \
case omp_parallel_sections_pragma_K: \
case omp_section_pragma_K: \
case omp_simd_pragma_K: \
case omp_target_pragma_K: \
case omp_task_pragma_K

This macro collects all case labels for pragma objects.

Definition at line 610 of file tree_node.hpp.

Referenced by tree_helper::AccessedMaximumBitsize(), tree_helper::AccessedMinimunBitsize(), tree_helper::AllocatedMemorySize(), determine_memory_accesses::analyze_node(), Bit_Value::backward_transfer(), operations_cfg_computation::build_operation_recursive(), CallGraphManager::call_graph_computation_recursive(), BehavioralHelper::CanBeSpeculated(), tree_helper::CGetPointedType(), tree_helper::CGetType(), check_for_simple_pointer_arithmetic(), simple_code_motion::CheckMovable(), Vectorize::ClassifyTreeNode(), tree_manager::collapse_into(), tree_helper::compute_ssa_uses_rec_ptr(), tree_helper::ComputeSsaUses(), tree_helper::CountPointers(), tree_manipulation::create_binary_operation(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_unary_operation(), mux_connection_binding::determine_connection(), IR_lowering::division_by_a_constant(), tree_manager::erase_usage_info(), UnaryOpNode::eval(), BinaryOpNode::evaluate(), Bit_Value::forward_transfer(), BehavioralHelper::get_attributes(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_intermediate_var(), tree_helper::get_pointed_type(), tree_helper::get_required_values(), tree_helper::get_used_variables(), tree_helper::GetBaseVariable(), tree_helper::GetFunctionReturnType(), BehavioralHelper::GetInit(), application_manager::GetProducedValue(), tree_helper::GetTypeName(), GimpleWriter::GimpleWriter(), MemoryInitializationWriterBase::GoUp(), tree_manager::insert_usage_info(), BehavioralHelper::is_a_constant(), tree_helper::is_packed_access(), tree_helper::IsConstant(), tree_helper::IsPackedType(), tree_helper::IsPointerResolved(), tree_helper::IsVariableType(), tree_helper::LastStatement(), CallGraphBuiltinCall::lookForBuiltinCall(), Vectorize::LookForScalar(), Range::makeSatisfyingCmpRegion(), tree_helper::op_symbol(), BBWriter::operator()(), SymbRange::print(), BehavioralHelper::print_forward_declaration(), BehavioralHelper::print_type_declaration(), BehavioralHelper::print_vertex(), BehavioralHelper::PrintConstant(), BehavioralHelper::PrintInit(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), MemoryInitializationCWriter::Process(), MemoryInitializationWriter::Process(), parm2ssa::recursive_analysis(), string_cst_fix::recursive_analysis(), hls_div_cg_ext::recursive_examinate(), VarDeclFix::recursive_examinate(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_helper::RecursiveGetTypesToBeDeclared(), tree_manager::RecursiveReplaceTreeNode(), tree_helper::Size(), BitLatticeManipulator::Size(), SymbRange::solveFuture(), Vectorize::Transform(), and fu_binding::write_init().

◆ CASE_QUATERNARY_EXPRESSION

#define CASE_QUATERNARY_EXPRESSION
Value:
array_range_ref_K: \
case array_ref_K

This macro collects all case labels for quaternary_expr objects.

Definition at line 574 of file tree_node.hpp.

Referenced by tree_helper::AccessedMaximumBitsize(), tree_helper::AccessedMinimunBitsize(), tree_helper::AllocatedMemorySize(), determine_memory_accesses::analyze_node(), operations_cfg_computation::build_operation_recursive(), CallGraphManager::call_graph_computation_recursive(), BehavioralHelper::CanBeSpeculated(), tree_helper::CGetPointedType(), tree_helper::CGetType(), simple_code_motion::CheckMovable(), tree_manager::collapse_into(), tree_helper::compute_ssa_uses_rec_ptr(), tree_helper::ComputeSsaUses(), tree_helper::CountPointers(), tree_manipulation::create_binary_operation(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_unary_operation(), IR_lowering::division_by_a_constant(), tree_manager::erase_usage_info(), UnaryOpNode::eval(), BinaryOpNode::evaluate(), BehavioralHelper::get_attributes(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_intermediate_var(), tree_helper::get_pointed_type(), tree_helper::get_used_variables(), tree_helper::GetBaseVariable(), tree_helper::GetFunctionReturnType(), BehavioralHelper::GetInit(), application_manager::GetProducedValue(), tree_helper::GetTypeName(), GimpleWriter::GimpleWriter(), MemoryInitializationWriterBase::GoUp(), tree_manager::insert_usage_info(), BehavioralHelper::is_a_constant(), tree_helper::IsConstant(), tree_helper::IsPackedType(), tree_helper::IsVariableType(), tree_helper::LastStatement(), CallGraphBuiltinCall::lookForBuiltinCall(), Vectorize::LookForScalar(), Range::makeSatisfyingCmpRegion(), tree_helper::op_symbol(), BBWriter::operator()(), SymbRange::print(), BehavioralHelper::print_forward_declaration(), BehavioralHelper::print_type_declaration(), BehavioralHelper::print_vertex(), BehavioralHelper::PrintConstant(), BehavioralHelper::PrintInit(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), MemoryInitializationCWriter::Process(), MemoryInitializationWriter::Process(), parm2ssa::recursive_analysis(), string_cst_fix::recursive_analysis(), hls_div_cg_ext::recursive_examinate(), VarDeclFix::recursive_examinate(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_helper::RecursiveGetTypesToBeDeclared(), VarComputation::RecursivelyAnalyze(), tree_manager::RecursiveReplaceTreeNode(), SymbRange::solveFuture(), Vectorize::Transform(), and fu_binding::write_init().

◆ CASE_TERNARY_EXPRESSION

#define CASE_TERNARY_EXPRESSION
Value:
component_ref_K: \
case bit_field_ref_K: \
case bit_ior_concat_expr_K: \
case vtable_ref_K: \
case with_cleanup_expr_K: \
case obj_type_ref_K: \
case save_expr_K: \
case cond_expr_K: \
case vec_cond_expr_K: \
case vec_perm_expr_K: \
case dot_prod_expr_K: \
case ternary_plus_expr_K: \
case ternary_pm_expr_K: \
case ternary_mp_expr_K: \
case ternary_mm_expr_K: \
case fshl_expr_K: \
case fshr_expr_K: \
case insertvalue_expr_K: \
case insertelement_expr_K

This macro collects all case labels for ternary_expr objects.

Definition at line 550 of file tree_node.hpp.

Referenced by tree_helper::AccessedMaximumBitsize(), tree_helper::AccessedMinimunBitsize(), determine_memory_accesses::analyze_node(), Bit_Value::backward_transfer(), operations_cfg_computation::build_operation_recursive(), BehavioralHelper::CanBeSpeculated(), tree_helper::CGetPointedType(), tree_helper::CGetType(), tree_manager::collapse_into(), tree_helper::compute_ssa_uses_rec_ptr(), tree_helper::ComputeSsaUses(), tree_helper::CountPointers(), tree_manipulation::create_binary_operation(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_unary_operation(), IR_lowering::division_by_a_constant(), tree_manager::erase_usage_info(), UnaryOpNode::eval(), BinaryOpNode::evaluate(), BehavioralHelper::get_attributes(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_intermediate_var(), tree_helper::get_pointed_type(), tree_helper::get_required_values(), tree_helper::get_used_variables(), tree_helper::GetBaseVariable(), tree_helper::GetFunctionReturnType(), BehavioralHelper::GetInit(), application_manager::GetProducedValue(), tree_helper::GetTypeName(), GimpleWriter::GimpleWriter(), MemoryInitializationWriterBase::GoUp(), tree_manager::insert_usage_info(), BehavioralHelper::is_a_constant(), tree_helper::IsConstant(), tree_helper::IsPackedType(), tree_helper::IsVariableType(), tree_helper::LastStatement(), CallGraphBuiltinCall::lookForBuiltinCall(), Vectorize::LookForScalar(), Range::makeSatisfyingCmpRegion(), tree_helper::op_symbol(), BBWriter::operator()(), SymbRange::print(), BehavioralHelper::print_forward_declaration(), BehavioralHelper::print_type_declaration(), BehavioralHelper::print_vertex(), BehavioralHelper::PrintConstant(), BehavioralHelper::PrintInit(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), MemoryInitializationCWriter::Process(), MemoryInitializationWriter::Process(), parm2ssa::recursive_analysis(), string_cst_fix::recursive_analysis(), hls_div_cg_ext::recursive_examinate(), VarDeclFix::recursive_examinate(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_helper::RecursiveGetTypesToBeDeclared(), VarComputation::RecursivelyAnalyze(), tree_manager::RecursiveReplaceTreeNode(), tree_helper::Size(), BitLatticeManipulator::Size(), SymbRange::solveFuture(), Vectorize::Transform(), and fu_binding::write_init().

◆ CASE_TYPE_NODES

#define CASE_TYPE_NODES
Value:
array_type_K: \
case boolean_type_K: \
case CharType_K: \
case nullptr_type_K: \
case type_pack_expansion_K: \
case complex_type_K: \
case enumeral_type_K: \
case function_type_K: \
case integer_type_K: \
case lang_type_K: \
case method_type_K: \
case offset_type_K: \
case pointer_type_K: \
case qual_union_type_K: \
case real_type_K: \
case record_type_K: \
case reference_type_K: \
case set_type_K: \
case template_type_parm_K: \
case typename_type_K: \
case union_type_K: \
case vector_type_K: \
case void_type_K: \
case type_argument_pack_K

This macro collects all case labels for type objects.

Definition at line 581 of file tree_node.hpp.

Referenced by tree_helper::AllocatedMemorySize(), determine_memory_accesses::analyze_node(), Bit_Value::backward_transfer(), operations_cfg_computation::build_operation_recursive(), CallGraphManager::call_graph_computation_recursive(), BehavioralHelper::CanBeSpeculated(), tree_helper::CGetType(), check_for_simple_pointer_arithmetic(), simple_code_motion::CheckMovable(), Vectorize::ClassifyTreeNode(), tree_manager::collapse_into(), tree_helper::compute_ssa_uses_rec_ptr(), tree_helper::ComputeSsaUses(), tree_manipulation::create_binary_operation(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_unary_operation(), mux_connection_binding::determine_connection(), IR_lowering::division_by_a_constant(), tree_manager::erase_usage_info(), UnaryOpNode::eval(), BinaryOpNode::evaluate(), Bit_Value::forward_transfer(), BehavioralHelper::get_attributes(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_intermediate_var(), tree_helper::get_required_values(), tree_helper::get_used_variables(), tree_helper::GetBaseVariable(), BehavioralHelper::GetInit(), application_manager::GetProducedValue(), GimpleWriter::GimpleWriter(), tree_manager::insert_usage_info(), BehavioralHelper::is_a_constant(), tree_helper::is_packed_access(), tree_helper::IsConstant(), tree_helper::IsPointerResolved(), tree_helper::IsVariableType(), tree_helper::LastStatement(), CallGraphBuiltinCall::lookForBuiltinCall(), Vectorize::LookForScalar(), Range::makeSatisfyingCmpRegion(), tree_helper::op_symbol(), BBWriter::operator()(), SymbRange::print(), BehavioralHelper::print_vertex(), BehavioralHelper::PrintConstant(), BehavioralHelper::PrintInit(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), parm2ssa::recursive_analysis(), string_cst_fix::recursive_analysis(), hls_div_cg_ext::recursive_examinate(), VarDeclFix::recursive_examinate(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), VarComputation::RecursivelyAnalyze(), tree_manager::RecursiveReplaceTreeNode(), SymbRange::solveFuture(), Vectorize::Transform(), and fu_binding::write_init().

◆ CASE_UNARY_EXPRESSION

#define CASE_UNARY_EXPRESSION

This macro collects all case labels for unary_expr objects.

Its use it is quite simple: just add the following line in the switch statement case CASE_UNARY_EXPRESSION:

Definition at line 371 of file tree_node.hpp.

Referenced by tree_helper::AccessedMaximumBitsize(), tree_helper::AccessedMinimunBitsize(), tree_helper::AllocatedMemorySize(), determine_memory_accesses::analyze_node(), Bit_Value::backward_transfer(), operations_cfg_computation::build_operation_recursive(), CallGraphManager::call_graph_computation_recursive(), BehavioralHelper::CanBeSpeculated(), tree_helper::CGetPointedType(), tree_helper::CGetType(), Vectorize::ClassifyTreeNode(), tree_manager::collapse_into(), tree_helper::compute_ssa_uses_rec_ptr(), tree_helper::ComputeSsaUses(), tree_helper::CountPointers(), tree_manipulation::create_binary_operation(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_unary_operation(), IR_lowering::division_by_a_constant(), tree_manager::erase_usage_info(), BinaryOpNode::evaluate(), BehavioralHelper::get_attributes(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_intermediate_var(), tree_helper::get_pointed_type(), tree_helper::get_required_values(), tree_helper::get_used_variables(), tree_helper::GetBaseVariable(), tree_helper::GetFunctionReturnType(), BehavioralHelper::GetInit(), application_manager::GetProducedValue(), tree_helper::GetTypeName(), GimpleWriter::GimpleWriter(), MemoryInitializationWriterBase::GoUp(), tree_manager::insert_usage_info(), tree_helper::IsConstant(), tree_helper::IsPackedType(), tree_helper::IsVariableType(), tree_helper::LastStatement(), CallGraphBuiltinCall::lookForBuiltinCall(), Vectorize::LookForScalar(), Range::makeSatisfyingCmpRegion(), BBWriter::operator()(), SymbRange::print(), BehavioralHelper::print_forward_declaration(), BehavioralHelper::print_type_declaration(), BehavioralHelper::print_vertex(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), MemoryInitializationCWriter::Process(), MemoryInitializationWriter::Process(), parm2ssa::recursive_analysis(), string_cst_fix::recursive_analysis(), hls_div_cg_ext::recursive_examinate(), VarDeclFix::recursive_examinate(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_helper::RecursiveGetTypesToBeDeclared(), VarComputation::RecursivelyAnalyze(), tree_manager::RecursiveReplaceTreeNode(), tree_helper::Size(), BitLatticeManipulator::Size(), SymbRange::solveFuture(), Vectorize::Transform(), and fu_binding::write_init().

◆ CREATE_TREE_NODE_CLASS

#define CREATE_TREE_NODE_CLASS (   class_name,
  superclass 
)
Value:
struct class_name : public superclass \
{ \
GET_KIND_TEXT(class_name) \
GET_KIND(class_name) \
virtual void visit(tree_node_visitor* const v) const override; \
enum \
{ \
GETID(superclass) = 0 \
}; \
explicit class_name(unsigned int i) : superclass(i) \
{ \
} \
}

macro to create simple tree classes

Definition at line 720 of file tree_node.hpp.

◆ GET_CONST_NODE

#define GET_CONST_NODE (   t)
Value:
((t) ? ((t)->get_kind() == tree_reindex_K ? (GetPointerS<const tree_reindex>(t))->actual_tree_node : \
throw_error(t, #t, __PRETTY_FUNCTION__, __FILE__, __LINE__)) : \
throw_error(t, #t, __PRETTY_FUNCTION__, __FILE__, __LINE__))
T & throw_error(const T &t, const std::string &expression, const char *pp, const char *file, int line, int code=EXIT_FAILURE)
Template function used to throw an exception.
Definition: exceptions.hpp:78

Definition at line 347 of file tree_node.hpp.

Referenced by tree_helper::AccessedMaximumBitsize(), tree_helper::AccessedMinimunBitsize(), mux_connection_binding::address_precision(), ssa_name::AddUseStmt(), gimple_node::AddVover(), gimple_node::AddVuse(), tree_helper::AllocatedMemorySize(), determine_memory_accesses::analyze_node(), PhiOpt::ApplyIfMerge(), PhiOpt::ApplyIfRemove(), PhiOpt::ApplyMultiMerge(), PhiOpt::ApplyMultiRemove(), IR_lowering::array_ref_lowering(), Bit_Value::backward(), Bit_Value::backward_chain(), Bit_Value::backward_transfer(), BinaryOpNode::BinaryOpNode(), branchOpRecurse(), operations_cfg_computation::build_operation_recursive(), HWCallInjection::buildBuiltinCall(), AllocationInformation::can_be_asynchronous_ram(), cannot_have_struct_parameters(), tree_helper::CGetElements(), tree_helper::CGetFieldTypes(), tree_helper::CGetPointedType(), tree_helper::CGetType(), InterfaceInfer::ChasePointerInterfaceRecurse(), lut_transformation::CHECK_BIN_EXPR_INT_SIZE(), check_for_simple_pointer_arithmetic(), bloc::check_function_call(), short_circuit_taf::check_merging_candidate(), short_circuit_taf::check_phis(), Vectorize::ClassifyTreeNode(), tree_manipulation::CloneFunction(), FunctionCallOpt::compute_cost(), memory::compute_next_base_address(), tree_helper::compute_ssa_uses_rec_ptr(), Vectorize::ComputeFrontendRelationships(), tree_helper::ComputeSsaUses(), BitLatticeManipulator::constructor_bitstring(), constructor_range(), convertUsesToDFSOrdered(), tree_helper::CountPointers(), tree_manipulation::create_binary_operation(), mux_connection_binding::create_connections(), tree_manipulation::create_gimple_call(), short_circuit_taf::create_gimple_cond(), tree_manipulation::create_gimple_modify_stmt(), tree_manipulation::create_parm_decl(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_ssa_name(), tree_manipulation::create_ternary_operation(), tree_node_dup::create_tree_node(), tree_manipulation::create_unary_operation(), lut_transformation::CreateBitSelectionNodeOrCast(), tree_manipulation::CreateCallExpr(), tree_manipulation::CreateNopExpr(), tree_manipulation::CreateUnsigned(), CWriter::DeclareType(), CWriter::DeclareVariable(), Nuutila::delControlDependenceEdges(), mux_connection_binding::determine_connection(), IR_lowering::division_by_a_constant(), Vectorize::DuplicateIncrement(), PhiOpNode::eval(), UnaryOpNode::eval(), BinaryOpNode::eval(), TernaryOpNode::eval(), LoadOpNode::eval(), evaluateBranch(), BitValueIPA::Exec(), CreateAddressTranslation::Exec(), InterfaceInfer::Exec(), tree_helper::extract_array_indexes(), tree_manipulation::ExtractCondition(), fu_binding::fill_array_ref_memory(), memory_allocation::finalize_memory_allocation(), tree_helper::find_obj_type_ref_function(), Vectorize::FixPhis(), Bit_Value::forward(), Bit_Value::forward_transfer(), InterfaceInfer::forwardInterface(), TestbenchGeneration::generate_init_file(), soft_float_cg_ext::generate_interface(), tree_helper::get_array_dim_and_bitsize(), HLS_manager::get_constant_string(), Bit_Value::get_current(), Bit_Value::get_current_or_best(), get_decl_name(), tree_helper::get_integer_cst_value(), BehavioralHelper::get_parameters(), tree_helper::get_required_values(), tree_helper::get_type_index(), tree_helper::get_type_name(), tree_helper::get_used_variables(), tree_helper::GetArrayDimensions(), tree_helper::GetArrayElementSize(), tree_helper::GetBaseVariable(), ValueDFS_Compare::getBlockEdge_local(), getBuiltinFieldTypes(), GetCallArgs(), Nuutila::getComponent(), AllocationInformation::GetCondExprTimeLatency(), AllocationInformation::GetConnectionTime(), tree_helper::GetConstValue(), AllocationInformation::GetCycleLatency(), tree_helper::GetFormalIth(), tree_manager::GetFunction(), tree_helper::GetFunctionName(), tree_helper::GetFunctionReturnType(), tree_helper::GetMangledFunctionName(), BehavioralHelper::GetParameters(), tree_helper::GetParameterTypes(), BehavioralHelper::GetParameterTypes(), application_manager::GetProducedValue(), tree_helper::GetRecordTypeName(), tree_helper::GetSourcePath(), AllocationInformation::GetStatementArea(), tree_helper::GetTemplateTypeName(), AllocationInformation::GetTimeLatency(), AllocationInformation::GetToDspRegisterDelay(), tree_helper::GetTypeName(), tree_helper::GetUnqualifiedType(), AllocationInformation::GetZeroDistanceOperations(), GimpleWriter::GimpleWriter(), MemoryInitializationWriterBase::GoDown(), MemoryInitializationWriterBase::GoNext(), MemoryInitializationWriterBase::GoUp(), CSE::has_memory_access(), FunctionCallOpt::HasConstantArgs(), CSE::hash_check(), tree_helper::HasToBeDeclared(), PhiOpt::IdentifyPattern(), BitLatticeManipulator::inf(), VarNode::init(), Bit_Value::initialize(), Bit_Value::Initialize(), tree_manipulation::InlineFunctionCall(), OrderedBasicBlock::instComesBefore(), parm_decl_taken_address_fix::InternalExec(), FixStructsPassedByValue::InternalExec(), BuiltinWaitCallModuleGenerator::InternalExec(), BuiltinWaitCallNModuleGenerator::InternalExec(), HWCallInjection::InternalExec(), SerializeMutualExclusions::InternalExec(), UnComparisonLowering::InternalExec(), use_counting::InternalExec(), BasicBlocksCfgComputation::InternalExec(), SwitchFix::InternalExec(), FixVdef::InternalExec(), extract_patterns::InternalExec(), BuildVirtualPhi::InternalExec(), mem_dominator_allocation::InternalExec(), eSSA::InternalExec(), rebuild_initialization::InternalExec(), SplitReturn::InternalExec(), compute_implicit_calls::InternalExec(), FunctionCallTypeCleanup::InternalExec(), determine_memory_accesses::InternalExec(), CondExprRestructuring::InternalExec(), commutative_expr_restructuring::InternalExec(), simple_code_motion::InternalExec(), short_circuit_taf::InternalExec(), dead_code_elimination::InternalExec(), CSE::InternalExec(), FunctionCallOpt::InternalExec(), MultipleEntryIfReduction::InternalExec(), lut_transformation::InternalExec(), IR_lowering::InternalExec(), Vectorize::InternalExec(), PhiOpt::InternalExec(), soft_float_cg_ext::InternalExec(), allocation::InternalExec(), tree_helper::is_a_misaligned_vector(), tree_helper::is_a_nop_function_decl(), tree_helper::is_channel(), tree_helper::is_clock(), tree_helper::is_event(), tree_helper::is_in_port(), tree_helper::is_inout_port(), mem_dominator_allocation::is_internal_obj(), is_large_integer(), tree_helper::is_module(), BehavioralHelper::is_named_pointer(), AllocationInformation::is_operation_bounded(), tree_helper::is_out_port(), tree_helper::is_packed_access(), tree_helper::is_port(), tree_helper::is_SC_BIND_PROXY_NIL(), tree_helper::is_signal(), tree_helper::IsAligned(), tree_helper::IsArrayEquivType(), tree_helper::IsArrayType(), tree_helper::IsBooleanType(), commutative_expr_restructuring::IsCommExprChain(), commutative_expr_restructuring::IsCommExprGimple(), tree_helper::IsComplexType(), CondExprRestructuring::IsCondExprChain(), CondExprRestructuring::IsCondExprGimple(), tree_helper::IsConstant(), tree_helper::IsConstType(), tree_helper::IsEnumType(), tree_helper::IsExternDeclaration(), tree_helper::IsFunctionDeclaration(), tree_helper::IsFunctionPointerType(), tree_helper::IsFunctionType(), tree_helper::IsInLibbambu(), tree_helper::IsLoad(), tree_helper::IsLut(), tree_helper::IsPackedType(), tree_helper::IsPointerResolved(), tree_helper::IsPointerType(), tree_helper::IsPositiveIntegerValue(), tree_helper::IsRealType(), tree_helper::IsSameType(), tree_helper::IsSignedIntegerType(), tree_helper::IsStaticDeclaration(), tree_helper::IsStore(), tree_helper::IsStructType(), tree_helper::IsSystemType(), tree_helper::IsUnionType(), tree_helper::IsUnsignedIntegerType(), tree_helper::IsVariableType(), tree_helper::IsVectorType(), tree_helper::IsVoidType(), tree_helper::IsVolatile(), tree_helper::LastStatement(), tree_helper::look_for_binfo_inheritance(), rebuild_initialization2::look_for_ROMs(), Bit_Value::lsb_to_zero(), ParallelMemoryFuBinding::manage_module_ports(), materializeStack(), multi_way_if::MergeCondCond(), multi_way_if::MergeCondMulti(), multi_way_if::MergeMultiCond(), multi_way_if::MergeMultiMulti(), PhiOpt::MergePhi(), Nuutila::Nuutila(), tree_helper::op_symbol(), PhiOpNode::opCtorGenerator(), UnaryOpNode::opCtorGenerator(), SigmaOpNode::opCtorGenerator(), BinaryOpNode::opCtorGenerator(), TernaryOpNode::opCtorGenerator(), LoadOpNode::opCtorGenerator(), Bit_Value_opt::optimize(), OrderedBasicBlock::OrderedBasicBlock(), FunctionCallTypeCleanup::ParametersTypeCleanup(), VarNode::print(), PhiOpNode::print(), UnaryOpNode::print(), SigmaOpNode::print(), BinaryOpNode::print(), TernaryOpNode::print(), LoadOpNode::print(), BehavioralHelper::print_attributes(), tree_helper::print_function_name(), BehavioralHelper::print_type_declaration(), TestbenchGeneration::print_var_init(), BehavioralHelper::print_vertex(), BehavioralHelper::PrintConstant(), PhiOpNode::printDot(), UnaryOpNode::printDot(), SigmaOpNode::printDot(), BinaryOpNode::printDot(), TernaryOpNode::printDot(), LoadOpNode::printDot(), BehavioralHelper::PrintInit(), BehavioralHelper::PrintNode(), MemoryInitializationWriterBase::PrintStatus(), tree_helper::PrintType(), BehavioralHelper::PrintVarDeclaration(), BehavioralHelper::PrintVariable(), MemoryInitializationCWriter::Process(), MemoryInitializationWriter::Process(), processBranch(), processMultiWayIf(), IR_lowering::reached_max_transformation_limit(), hls_div_cg_ext::recursive_examinate(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_helper::RecursiveGetTypesToBeDeclared(), VarComputation::RecursivelyAnalyze(), tree_manager::RecursiveReplaceTreeNode(), application_manager::RegisterTransformation(), PhiOpt::RemoveCondExpr(), eSSA::renameUses(), compute_implicit_calls::replace_with_memcpy(), compute_implicit_calls::replace_with_memset(), PhiOpt::ReplaceVirtualUses(), FunctionCallOpt::RequestCallOpt(), ResolvePointerAlias(), same_size_fields(), Operand::set(), InterfaceInfer::setReadInterface(), gimple_node::SetVdef(), InterfaceInfer::setWriteInterface(), soft_float_cg_ext::signature_lowering(), PhiOpt::SinglePhiOptimization(), VcdSignalSelection::SingleStepPropagateAddrSsa(), tree_helper::Size(), BitLatticeManipulator::Size(), fu_binding::specialise_fu(), soft_float_cg_ext::ssa_lowering(), stackIsInScope(), BehavioralHelper::start_with_a_label(), BitLatticeManipulator::sup(), TernaryOpNode::TernaryOpNode(), Vectorize::Transform(), VarNode::updateIR(), Schedule::UpdateTime(), valueComesBefore(), tree_manipulation::VersionFunctionCall(), Nuutila::visit(), fu_binding::write_init(), FunctionFrontendFlowStep::WriteBBGraphDot(), BasicBlocksProfilingCWriter::WriteGlobalDeclarations(), HLSCWriter::WriteParamInitialization(), and DiscrepancyAnalysisCWriter::writePostInstructionInfo().

◆ GET_INDEX_CONST_NODE

#define GET_INDEX_CONST_NODE (   t)    (GET_CONST_NODE(t))->index

Definition at line 363 of file tree_node.hpp.

Referenced by __arg_suffix(), determine_memory_accesses::analyze_node(), PhiOpt::ApplyIfMerge(), PhiOpt::ApplyIfRemove(), PhiOpt::ApplyMultiMerge(), PhiOpt::ApplyMultiRemove(), Bit_Value::backward(), Bit_Value::backward_chain(), Bit_Value::backward_transfer(), tree_manipulation::bb_add_stmt(), operations_cfg_computation::build_operation_recursive(), HWCallInjection::buildBuiltinCall(), InterfaceInfer::ChasePointerInterfaceRecurse(), bloc::check_function_call(), tree_manager::check_ssa_uses(), tree_manipulation::CloneFunction(), tree_manager::collapse_into(), CBackend::ComputeRelationships(), tree_helper::ComputeSsaUses(), BitLatticeManipulator::constructor_bitstring(), constructor_range(), convertUsesToDFSOrdered(), tree_manipulation::create_basic_block(), tree_manipulation::create_binary_operation(), tree_manipulation::create_extract_bit_expr(), tree_manipulation::create_function_decl(), short_circuit_taf::create_gimple_cond(), tree_manipulation::create_gimple_cond(), tree_manipulation::create_gimple_modify_stmt(), tree_manipulation::create_gimple_return(), tree_manipulation::create_goto(), tree_manipulation::create_identifier_node(), tree_manipulation::create_label(), tree_manipulation::create_lut_expr(), PragmaAnalysis::create_map_pragma(), PragmaAnalysis::create_omp_pragma(), tree_manipulation::create_parm_decl(), tree_manipulation::create_phi_node(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_result_decl(), tree_manipulation::create_ssa_name(), fsm_controller::create_state_machine(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_translation_unit_decl(), tree_manipulation::create_unary_operation(), tree_manipulation::create_var_decl(), tree_manipulation::CreateIntegerCst(), Meet::crop(), DiscrepancyAnalysisCWriter::DeclareLocalVariables(), mux_connection_binding::determine_connection(), Vectorize::DuplicateIncrement(), TernaryOpNode::eval(), HWDiscrepancyAnalysis::Exec(), GenerateSynthesisScripts::Exec(), GenerateSimulationScripts::Exec(), generate_hdl::Exec(), call_graph_computation::Exec(), BitValueIPA::Exec(), dead_code_eliminationIPA::Exec(), Evaluation::Exec(), TestbenchGeneration::Exec(), InterfaceInfer::Exec(), tree_helper::extract_array_indexes(), tree_helper::find_obj_type_ref_function(), dead_code_elimination::fix_sdc_motion(), Meet::fixed(), Bit_Value::forward(), tree_helper::get_array_dim_and_bitsize(), tree_helper::get_array_var(), tree_helper::get_base_index(), Bit_Value::get_current(), Bit_Value::get_current_or_best(), tree_helper::get_integer_cst_value(), BehavioralHelper::get_parameters(), tree_helper::get_pointed_type(), application_manager::get_produced_value(), tree_helper::get_required_values(), tree_helper::get_used_variables(), tree_manipulation::GetBitsizeType(), ValueDFS_Compare::getBlockEdge_local(), tree_manipulation::GetBooleanType(), tree_manipulation::GetCustomIntegerType(), tree_manipulation::GetFunctionType(), BehavioralHelper::GetParameters(), tree_helper::GetRealType(), tree_manipulation::GetSignedIntegerType(), tree_manipulation::GetSizeType(), tree_manipulation::GetUnsignedIntegerType(), tree_manipulation::GetUnsignedLongLongType(), tree_manipulation::GetVoidType(), Meet::growth(), CSE::has_memory_access(), CSE::hash_check(), PhiOpt::IdentifyPattern(), TestbenchGeneration::Initialize(), FunctionCallOpt::Initialize(), Bit_Value::initialize(), tree_manipulation::InlineFunctionCall(), allocation::IntegrateTechnologyLibraries(), dataflow_cg_ext::InternalExec(), UnComparisonLowering::InternalExec(), BasicBlocksCfgComputation::InternalExec(), extract_patterns::InternalExec(), fanout_opt::InternalExec(), compute_implicit_calls::InternalExec(), parm2ssa::InternalExec(), FunctionCallTypeCleanup::InternalExec(), CondExprRestructuring::InternalExec(), commutative_expr_restructuring::InternalExec(), CSE::InternalExec(), FunctionCallOpt::InternalExec(), IR_lowering::InternalExec(), PhiOpt::InternalExec(), soft_float_cg_ext::InternalExec(), BehavioralHelper::is_named_pointer(), tree_helper::is_packed_access(), dead_code_elimination::kill_vdef(), CallGraphBuiltinCall::lookForBuiltinCall(), bloc::manageCallGraph(), Meet::narrow(), Bit_Value_opt::optimize(), FunctionCallTypeCleanup::ParametersTypeCleanup(), TestVectorParser::ParseXMLFile(), tree_helper::print_function_name(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), hls_div_cg_ext::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), soft_float_cg_ext::replaceWithCall(), FunctionCallOpt::RequestCallOpt(), ResolvePointerAlias(), Operand::set(), InterfaceInfer::setReadInterface(), InterfaceInfer::setWriteInterface(), dead_code_eliminationIPA::signature_opt(), soft_float_cg_ext::soft_float_cg_ext(), fu_binding::specialise_fu(), stackIsInScope(), VarNode::updateIR(), tree_manipulation::VersionFunctionCall(), virtual_phi_nodes_split::virtual_split_phi(), Nuutila::visit(), Meet::widen(), fu_binding::write_init(), DiscrepancyAnalysisCWriter::WriteExtraInitCode(), HLSCWriter::WriteFile(), HLSCWriter::WriteMainTestbench(), DiscrepancyAnalysisCWriter::WriteMainTestbench(), HLSCWriter::WriteParamInitialization(), and HLSCWriter::WriteTestbenchFunctionCall().

◆ GET_INDEX_NODE

#define GET_INDEX_NODE (   t)    (GET_NODE(t))->index

Macro used to hide implementation details when accessing a tree_node from another tree_node.

Parameters
tis the tree_nodeRef to access
Returns
the index of t in tree_manager

Definition at line 361 of file tree_node.hpp.

Referenced by determine_memory_accesses::analyze_node(), VarComputation::AnalyzeVops(), IR_lowering::array_ref_lowering(), Bit_Value::backward_transfer(), operations_cfg_computation::build_operation_recursive(), HWCallInjection::buildBuiltinCall(), CallGraphBuiltinCall::buildTypeToDeclaration(), CallGraphManager::call_graph_computation_recursive(), BehavioralHelper::CanBeMoved(), tree_manager::check_for_decl(), tree_manager::check_for_type(), bloc::check_function_call(), check_tree_node_opt(), pragma_manager::CheckAddOmpSimd(), simple_code_motion::CheckMovable(), tree_manager::collapse_into(), mux_connection_binding::create_connections(), PragmaAnalysis::create_omp_pragma(), vcd_utility::detect_address_mismatch(), VcdSignalSelection::DetectInvalidReturns(), mux_connection_binding::determine_connection(), BehavioralHelper::end_with_a_cond_or_goto(), tree_manager::erase_usage_info(), BitValueIPA::Exec(), PragmaAnalysis::Exec(), InterfaceInfer::Exec(), IR_lowering::expand_mult_highpart(), IR_lowering::expand_target_mem_ref(), mux_connection_binding::extract_parm_decl(), Bit_Value::forward_transfer(), BehavioralHelper::get_array_ref_array(), BehavioralHelper::get_array_ref_index(), BehavioralHelper::get_attributes(), BehavioralHelper::get_component_ref_field(), BehavioralHelper::get_component_ref_record(), HLS_manager::get_constant_string(), operations_cfg_computation::get_first_node(), BehavioralHelper::get_indirect_ref_var(), BehavioralHelper::get_intermediate_var(), BehavioralHelper::get_mem_ref_base(), BehavioralHelper::get_mem_ref_offset(), BehavioralHelper::get_operand_from_unary_expr(), BehavioralHelper::get_parameters(), BehavioralHelper::GetInit(), BehavioralHelper::GetVarFromSsa(), Bit_Value::initialize(), VcdSignalSelection::InitialSsaIsAddress(), tree_manager::insert_usage_info(), parm_decl_taken_address_fix::InternalExec(), SwitchFix::InternalExec(), remove_clobber_ga::InternalExec(), BuildVirtualPhi::InternalExec(), fanout_opt::InternalExec(), rebuild_initialization::InternalExec(), NI_SSA_liveness::InternalExec(), BlockFix::InternalExec(), SplitReturn::InternalExec(), compute_implicit_calls::InternalExec(), FunctionCallTypeCleanup::InternalExec(), hls_div_cg_ext::InternalExec(), CondExprRestructuring::InternalExec(), simple_code_motion::InternalExec(), dead_code_elimination::InternalExec(), operations_cfg_computation::InternalExec(), IR_lowering::InternalExec(), soft_float_cg_ext::InternalExec(), BehavioralHelper::is_a_constant(), BehavioralHelper::is_named_pointer(), CallGraphBuiltinCall::lookForBuiltinCall(), bloc::manageCallGraph(), tree_manager::merge_tree_managers(), LoadOpNode::opCtorGenerator(), lt_tree_reindex::operator()(), BBWriter::operator()(), BehavioralHelper::print_attributes(), BehavioralHelper::print_type_declaration(), BehavioralHelper::PrintConstant(), BehavioralHelper::PrintInit(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), BehavioralHelper::PrintVariable(), lut_transformation::ProcessBasicBlock(), parm2ssa::recursive_analysis(), string_cst_fix::recursive_analysis(), VarDeclFix::recursive_examinate(), CheckSystemType::recursive_examinate(), tree_manager::RecursiveReplaceTreeNode(), bloc::RemoveStmt(), CWriter::schedule_copies(), VcdSignalSelection::SelectInitialAddrParam(), InterfaceInfer::setWriteInterface(), VcdSignalSelection::SingleStepPropagateAddrSsa(), soft_float_cg_ext::ssa_lowering(), BehavioralHelper::start_with_a_label(), NI_SSA_liveness::Up_and_Mark(), varFound(), virtual_phi_nodes_split::virtual_split_phi(), fu_binding::write_init(), raw_writer::write_when_not_null(), DiscrepancyAnalysisCWriter::writePostInstructionInfo(), EdgeCWriter::writeRoutineInstructions_rec(), and CWriter::writeRoutineInstructions_rec().

◆ GET_KIND_TEXT

#define GET_KIND_TEXT (   meth)

◆ GET_NODE

#define GET_NODE (   t)
Value:
((t) ? ((t)->get_kind() == tree_reindex_K ? (GetPointerS<tree_reindex>(t))->actual_tree_node : \
throw_error(t, #t, __PRETTY_FUNCTION__, __FILE__, __LINE__)) : \
throw_error(t, #t, __PRETTY_FUNCTION__, __FILE__, __LINE__))
T & throw_error(const T &t, const std::string &expression, const char *pp, const char *file, int line, int code=EXIT_FAILURE)
Template function used to throw an exception.
Definition: exceptions.hpp:78

Macro used to hide implementation details when accessing a tree_node from another tree_node.

Parameters
tis the tree_nodeRef to access
Returns
the pointer to t

Definition at line 343 of file tree_node.hpp.

Referenced by dead_code_elimination::add_gimple_nop(), gimple_phi::AddDefEdge(), Vectorize::AddGuards(), tree_helper::AllocatedMemorySize(), determine_memory_accesses::analyze_node(), PhiOpt::ApplyDiffNothing(), PhiOpt::ApplyGimpleNothing(), PhiOpt::ApplyIfMerge(), PhiOpt::ApplyIfNothing(), PhiOpt::ApplyIfRemove(), PhiOpt::ApplyMultiMerge(), PhiOpt::ApplyMultiNothing(), PhiOpt::ApplyMultiRemove(), IR_lowering::array_ref_lowering(), tree_manipulation::bb_add_stmt(), operations_cfg_computation::build_operation_recursive(), HWCallInjection::buildBuiltinCall(), CallGraphManager::call_graph_computation_recursive(), Schedule::CanBeMoved(), BehavioralHelper::CanBeMoved(), BehavioralHelper::CanBeSpeculated(), cannot_have_struct_parameters(), lut_transformation::cannotBeLUT(), PhiOpt::ChainOptimization(), tree_manager::check_for_decl(), tree_manager::check_for_type(), bloc::check_function_call(), FunctionExpander::check_lib_type(), tree_manager::check_ssa_uses(), pragma_manager::CheckAddOmpFor(), pragma_manager::CheckAddOmpSimd(), lut_transformation::CheckIfPI(), lut_transformation::CheckIfPO(), lut_transformation::CheckIfProcessable(), simple_code_motion::CheckMovable(), pragma_manager::CheckOmpFor(), Vectorize::ClassifyTreeNode(), CleanVirtuals(), tree_manipulation::CloneFunction(), tree_manager::collapse_into(), tree_helper::compute_ssa_uses_rec_ptr(), CreateAddressTranslation::ComputeAddress(), Schedule::ComputeCriticalPath(), AllocationInformation::ComputeDrivenCondExpr(), LoopsAnalysisBambu::ComputeFrontendRelationships(), AllocationInformation::ComputeRoots(), tree_helper::ComputeSsaUses(), BitLatticeManipulator::constructor_bitstring(), tree_helper::CountPointers(), tree_manipulation::create_basic_block(), tree_manipulation::create_binary_operation(), mux_connection_binding::create_connections(), tree_manipulation::create_extract_bit_expr(), tree_manipulation::create_function_decl(), short_circuit_taf::create_gimple_cond(), tree_manipulation::create_gimple_cond(), tree_manipulation::create_gimple_return(), tree_manipulation::create_goto(), tree_manipulation::create_identifier_node(), tree_manipulation::create_label(), tree_manipulation::create_lut_expr(), PragmaAnalysis::create_map_pragma(), PragmaAnalysis::create_omp_pragma(), tree_manipulation::create_phi_node(), tree_manipulation::create_quaternary_operation(), tree_manipulation::create_result_decl(), tree_manipulation::create_ssa_name(), tree_manipulation::create_ternary_operation(), tree_manipulation::create_translation_unit_decl(), tree_manipulation::create_unary_operation(), tree_manipulation::create_var_decl(), tree_manipulation::CreateAndExpr(), tree_manipulation::CreateEqExpr(), tree_manipulation::CreateGimpleAssignAddrExpr(), tree_manipulation::CreateIntegerCst(), tree_manipulation::CreateNopExpr(), tree_manipulation::CreateNotExpr(), tree_manipulation::CreateOrExpr(), VcdSignalSelection::CrossPropagateAddrSsa(), discrepancy_instruction_writer::declareFunction(), CWriter::DeclareLocalVariables(), vcd_utility::detect_regular_mismatch(), VcdSignalSelection::DetectInvalidReturns(), IR_lowering::division_by_a_constant(), Vectorize::DuplicateIncrement(), BehavioralHelper::end_with_a_cond_or_goto(), tree_manager::erase_usage_info(), Schedule::EvaluateCondsMerging(), Schedule::EvaluateMultiWayIfsMerging(), HDLFunctionDeclFix::Exec(), call_graph_computation::Exec(), BitValueIPA::Exec(), string_cst_fix::Exec(), PragmaAnalysis::Exec(), create_tree_manager::Exec(), CreateAddressTranslation::Exec(), InterfaceInfer::Exec(), IR_lowering::expand_MC(), IR_lowering::expand_mult_const(), IR_lowering::expand_mult_highpart(), IR_lowering::expand_sdiv_pow2(), IR_lowering::expand_smod_pow2(), IR_lowering::expand_target_mem_ref(), CallGraphManager::expandCallGraphFromFunction(), rebuild_initialization2::extract_var_decl(), rebuild_initialization2::extract_var_decl_ppe(), tree_manipulation::ExtractCondition(), extractOp1(), fu_binding::fill_array_ref_memory(), memory_allocation::finalize_memory_allocation(), tree_helper::find_obj_type_ref_function(), multi_way_if::FixCfg(), Vectorize::FixPhis(), Bit_Value::forward(), tree_manager::function_index_mngl(), tree_helper::get_array_dim_and_bitsize(), tree_helper::get_array_var(), PragmaAnalysis::get_call_parameter(), record_type::get_field(), operations_cfg_computation::get_first_node(), fsm_controller::get_guard_value(), BehavioralHelper::get_intermediate_var(), BehavioralHelper::get_label_name(), record_type::get_maybe_name(), BehavioralHelper::get_parameters(), tree_helper::get_required_values(), getAssign(), tree_helper::GetBaseVariable(), Schedule::GetBBEndingTime(), tree_manipulation::GetBitsizeType(), tree_manipulation::GetBooleanType(), AllocationInformation::GetConnectionTime(), tree_manipulation::GetCustomIntegerType(), tree_manager::GetFunction(), getFunctionPointerType(), tree_helper::GetFunctionSize(), getFunctionType(), OpNodeInfo::GetOperation(), AllocationInformation::GetPhiConnectionLatency(), Schedule::GetReadyTime(), tree_helper::GetRecordTypeName(), tree_manipulation::GetSignedIntegerType(), tree_manipulation::GetSizeType(), AllocationInformation::GetStatementArea(), tree_helper::GetTemplateTypeName(), AllocationInformation::GetTimeLatency(), tree_manipulation::GetUnsignedIntegerType(), tree_manipulation::GetUnsignedLongLongType(), tree_manipulation::GetVoidType(), GimpleWriter::GimpleWriter(), tree_helper::has_omp_simd(), NI_SSA_liveness::Initialize(), RemoveEndingIf::Initialize(), simple_code_motion::Initialize(), multi_way_if::Initialize(), MultipleEntryIfReduction::Initialize(), Bit_Value::initialize(), PhiOpt::Initialize(), VcdSignalSelection::InitialPhiResIsAddress(), VcdSignalSelection::InitialSsaIsAddress(), tree_manipulation::InlineFunctionCall(), tree_manager::insert_usage_info(), parm_decl_taken_address_fix::InternalExec(), FixStructsPassedByValue::InternalExec(), HWCallInjection::InternalExec(), PredicateStatements::InternalExec(), SerializeMutualExclusions::InternalExec(), ExtractOmpAtomic::InternalExec(), SDCCodeMotion::InternalExec(), ExtractOmpFor::InternalExec(), use_counting::InternalExec(), SwitchFix::InternalExec(), ExtractGimpleCondOp::InternalExec(), FixVdef::InternalExec(), remove_clobber_ga::InternalExec(), UpdateSchedule::InternalExec(), HDLVarDeclFix::InternalExec(), extract_patterns::InternalExec(), LoopsAnalysisBambu::InternalExec(), BuildVirtualPhi::InternalExec(), AddOpPhiFlowEdges::InternalExec(), mem_dominator_allocation::InternalExec(), CallGraphBuiltinCall::InternalExec(), call_expr_fix::InternalExec(), eSSA::InternalExec(), rebuild_initialization::InternalExec(), fanout_opt::InternalExec(), NI_SSA_liveness::InternalExec(), BlockFix::InternalExec(), SplitReturn::InternalExec(), parm2ssa::InternalExec(), compute_implicit_calls::InternalExec(), FunctionCallTypeCleanup::InternalExec(), hls_div_cg_ext::InternalExec(), CondExprRestructuring::InternalExec(), commutative_expr_restructuring::InternalExec(), VarDeclFix::InternalExec(), RemoveEndingIf::InternalExec(), virtual_phi_nodes_split::InternalExec(), simple_code_motion::InternalExec(), short_circuit_taf::InternalExec(), dead_code_elimination::InternalExec(), CSE::InternalExec(), FunctionCallOpt::InternalExec(), multi_way_if::InternalExec(), MultipleEntryIfReduction::InternalExec(), CheckSystemType::InternalExec(), operations_cfg_computation::InternalExec(), IR_lowering::InternalExec(), Vectorize::InternalExec(), PhiOpt::InternalExec(), soft_float_cg_ext::InternalExec(), tree_helper::is_concat_bit_ior_expr(), fanout_opt::is_dest_relevant(), tree_helper::is_parameter(), tree_helper::is_simple_pointer_plus_test(), tree_manager::is_top_function(), BehavioralHelper::is_va_start_call(), BehavioralHelper::is_var_args(), commutative_expr_restructuring::IsCommExprChain(), commutative_expr_restructuring::IsCommExprGimple(), CondExprRestructuring::IsCondExprChain(), CondExprRestructuring::IsCondExprGimple(), dead_code_elimination::kill_uses(), dead_code_elimination::kill_vdef(), rebuild_initialization2::look_for_ROMs(), CallGraphBuiltinCall::lookForBuiltinCall(), bloc::manageCallGraph(), materializeStack(), multi_way_if::MergeCondCond(), PhiOpt::MergePhi(), dead_code_elimination::move2emptyBB(), LoadOpNode::opCtorGenerator(), Operand::Operand(), BBWriter::operator()(), FunctionExpander::operator()(), Bit_Value_opt::optimize(), BehavioralHelper::print_attributes(), vcd_utility::print_discrepancy(), BehavioralHelper::print_type_declaration(), BehavioralHelper::PrintConstant(), BehavioralHelper::PrintNode(), tree_helper::PrintType(), BehavioralHelper::PrintVariable(), lut_transformation::ProcessBasicBlock(), processBranch(), bloc::PushAfter(), bloc::PushBack(), bloc::PushBefore(), bloc::PushFront(), parm2ssa::recursive_analysis(), string_cst_fix::recursive_analysis(), hls_div_cg_ext::recursive_examinate(), VarDeclFix::recursive_examinate(), CheckSystemType::recursive_examinate(), soft_float_cg_ext::RecursiveExaminate(), tree_manager::RecursiveReplaceTreeNode(), gimple_phi::RemoveDefEdge(), bloc::RemovePhi(), bloc::RemoveStmt(), bloc::ReorderLUTs(), bloc::Replace(), gimple_phi::ReplaceDefEdge(), tree_manager::ReplaceTreeNode(), PhiOpt::ReplaceVirtualUses(), short_circuit_taf::restructure_CFG(), CWriter::schedule_copies(), VcdSignalSelection::SelectInitialAddrParam(), Operand::set(), Vectorize::SetPredication(), InterfaceInfer::setReadInterface(), InterfaceInfer::setWriteInterface(), soft_float_cg_ext::signature_lowering(), dead_code_eliminationIPA::signature_opt(), VcdSignalSelection::SingleStepPropagateAddrSsa(), VcdSignalSelection::SingleStepPropagateParamToSsa(), BitLatticeManipulator::Size(), soft_float_cg_ext::soft_float_cg_ext(), fu_binding::specialise_fu(), soft_float_cg_ext::ssa_lowering(), BehavioralHelper::start_with_a_label(), PointToSolution::ToString(), Vectorize::Transform(), NI_SSA_liveness::Up_and_Mark(), bloc::update_new_stmt(), multi_way_if::UpdateCfg(), VarNode::updateIR(), Schedule::UpdateTime(), varFound(), tree_manipulation::VersionFunctionCall(), virtual_phi_nodes_split::virtual_split_phi(), fu_binding::write_init(), FunctionFrontendFlowStep::WriteBBGraphDot(), BasicBlocksProfilingCWriter::WriteGlobalDeclarations(), DiscrepancyAnalysisCWriter::writePostInstructionInfo(), and DiscrepancyAnalysisCWriter::writePreInstructionInfo().

◆ NON_LEAF_TREE_NODES

#define NON_LEAF_TREE_NODES
Value:
This struct specifies a point-to solution.
Definition: tree_node.hpp:1001
struct definition of the source position.
Definition: tree_node.hpp:832
struct definition of the unary node structures.
Definition: tree_node.hpp:1177
Abstract pure class for the tree structure.
Definition: tree_node.hpp:139
struct definition of the Quaternary node structures.
Definition: tree_node.hpp:1276
This struct specifies super class for constant nodes.
Definition: tree_node.hpp:1431
struct definition of the field attr on function_decl, field_decl, var_decl tree node.
Definition: tree_node.hpp:774
() label_decl()() modop_expr() new_expr() placeholder_expr() type_node
Definition: tree_node.cpp:166
struct definition of common part of WeightedNode (gimple_assign, expr_node)
Definition: tree_node.hpp:738
() label_decl() expr_node
Definition: tree_node.cpp:164
struct definition of the common part of a gimple with virtual operands
Definition: tree_node.hpp:1078
struct definition of the binary node structures.
Definition: tree_node.hpp:1206
struct definition of the declaration node structures.
Definition: tree_node.hpp:877
Memory tags used in tree-ssa to represent memory locations in virtual SSA.
Definition: tree_node.hpp:1393

Definition at line 93 of file tree_node.hpp.

◆ OBJ_NOT_SPECIALIZED_SEQ

#define OBJ_NOT_SPECIALIZED_SEQ
Value:
(translation_unit_decl)(label_decl)(void_type)(template_type_parm)(set_type)(qual_union_type)(offset_type)( \
lang_type)(CharType)(nullptr_type)(boolean_type)(typename_type)(none)(vec_new_expr) \
UNARY_EXPRESSION_TREE_NODES BINARY_EXPRESSION_TREE_NODES TERNARY_EXPRESSION_TREE_NODES(ctor_initializer)( \
trait_expr)(template_id_expr)(placeholder_expr)(new_expr)(gimple_resx)(gimple_predict)(gimple_nop) \
This struct specifies a point-to solution.
Definition: tree_node.hpp:1001
() 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
Definition: tree_node.cpp:168
() label_decl()() modop_expr() new_expr() placeholder_expr() template_id_expr(vec_new_expr)) BOOST_PP_SEQ_FOR_EACH(VISIT_TREE_NODE_MACRO
() label_decl() using_decl(translation_unit_decl)) BOOST_PP_SEQ_FOR_EACH(VISIT_TREE_NODE_MACRO
#define QUATERNARY_EXPRESSION_TREE_NODES
Definition: tree_common.hpp:87
#define TERNARY_EXPRESSION_TREE_NODES
Definition: tree_common.hpp:82
This struct specifies a hint for branch prediction.
Definition: tree_node.hpp:3846
#define BINARY_EXPRESSION_TREE_NODES
Definition: tree_common.hpp:68

Definition at line 122 of file tree_node.hpp.

Referenced by function_decl_refs::function_decl_refs(), tree_node_factory::tree_node_factory(), tree_node_finder::tree_node_finder(), tree_node_index_factory::tree_node_index_factory(), and tree_node_reached::tree_node_reached().

◆ OBJ_SPECIALIZED_SEQ

#define OBJ_SPECIALIZED_SEQ
Value:
struct definition of the type_decl tree node.
Definition: tree_node.hpp:5470
This struct specifies the integer_cst node.
Definition: tree_node.hpp:3242
struct definition of the const_decl tree node.
Definition: tree_node.hpp:2386
This struct implements the target_expr node.
Definition: tree_node.hpp:4815
This struct specifies the field bloc (basic block).
struct definition of the vector_type tree node.
Definition: tree_node.hpp:5938
struct definition of the array_type tree node.
Definition: tree_node.hpp:1520
struct definition of the real_type tree node.
Definition: tree_node.hpp:4039
Any erroneous construct is parsed into a node of this type.
Definition: tree_node.hpp:1462
This struct specifies the statement_list node.
Definition: tree_node.hpp:4662
A HANDLER wraps a catch handler for the HANDLER_TYPE.
Definition: tree_node.hpp:3141
struct definition of the source position.
Definition: tree_node.hpp:832
Represents an argument pack of types (or templates).
Definition: tree_node.hpp:5139
struct definition of the function_decl tree node.
Definition: tree_node.hpp:2759
This struct specifies the gimple_label node.
Definition: tree_node.hpp:3343
This struct specifies the string_cst node.
Definition: tree_node.hpp:4724
struct definition of the union_type tree node.
Definition: tree_node.hpp:5540
struct definition of the unary node structures.
Definition: tree_node.hpp:1177
struct definition of the record_type tree node.
Definition: tree_node.hpp:4078
GIMPLE_BIND <VARS, BLOCK, BODY> represents a lexical scope.
Definition: tree_node.hpp:1664
struct definition of the ternary node structures.
Definition: tree_node.hpp:1239
struct definition of the function_type tree node.
Definition: tree_node.hpp:2960
struct definition of the parm_decl tree node.
Definition: tree_node.hpp:3660
This class is used to perform the re-index of all tree nodes.
AGGR_INIT_EXPRs have a variably-sized representation similar to that of CALL_EXPRs.
Definition: tree_node.hpp:1919
Constructor: return an aggregate value made from specified components.
Definition: tree_node.hpp:2434
This struct specifies the binfo node.
Definition: tree_node.hpp:1713
struct definition of the template_decl tree node.
Definition: tree_node.hpp:4993
Abstract pure class for the tree structure.
Definition: tree_node.hpp:139
struct definition of the label_decl tree node.
Definition: tree_node.hpp:3529
struct definition of the label_decl tree node.
Definition: tree_node.hpp:5659
Directive represinting mapping of a software function on a component.
struct definition of the result_decl tree node.
Definition: tree_node.hpp:4266
This struct specifies the vector_cst node.
Definition: tree_node.hpp:5888
This struct specifies the gimple_phi node.
Definition: tree_node.hpp:3742
This struct represents a list-like node for chaining overloading candidates.
Definition: tree_node.hpp:3621
This struct specifies super class for constant nodes.
Definition: tree_node.hpp:1431
decl_node
Definition: tree_node.cpp:163
Low-level memory addressing.
Definition: tree_node.hpp:4938
This struct specifies the gimple_return node.
Definition: tree_node.hpp:4354
Represents an expression that will be expanded into a list of expressions when instantiated with one ...
Definition: tree_node.hpp:2186
struct definition of the function_decl tree node.
Definition: tree_node.hpp:3179
struct definition of the field_decl tree node.
Definition: tree_node.hpp:2640
struct definition of the complex_type tree node.
Definition: tree_node.hpp:2282
GIMPLE_SWITCH <INDEX, DEFAULT_LAB, LAB1, ..., LABN> represents the multiway branch: ...
Definition: tree_node.hpp:4773
struct definition of the field attr on function_decl, field_decl, var_decl tree node.
Definition: tree_node.hpp:774
struct definition of the pointer_type tree node.
Definition: tree_node.hpp:3896
This struct specifies the block node.
Definition: tree_node.hpp:1820
struct definition of common part of WeightedNode (gimple_assign, expr_node)
Definition: tree_node.hpp:738
struct definition of the reference_type tree node.
Definition: tree_node.hpp:4220
This struct specifies the cast_expr node.
Definition: tree_node.hpp:2057
struct definition of the common part of an expression
Definition: tree_node.hpp:973
This struct specifies the lut_expr node.
Definition: tree_node.hpp:6042
This struct specifies the complex_cst node.
Definition: tree_node.hpp:2237
struct definition of the type node structures.
Definition: tree_node.hpp:1318
This struct specifies the tree_list node.
Definition: tree_node.hpp:5255
This struct represent a statement expression.
Definition: tree_node.hpp:2592
This struct specifies the call_expr node.
Definition: tree_node.hpp:1873
This struct specifies reference to particular overloaded struct method The tree walker structure of t...
Definition: tree_node.hpp:4463
struct definition of the common part of a gimple with virtual operands
Definition: tree_node.hpp:1078
This struct represent a &#39;return&#39; statement.
Definition: tree_node.hpp:4387
This struct specifies a multi-way-if construct.
This struct specifies the real_cst node.
Definition: tree_node.hpp:3990
This struct specifies the case_label_expr node.
Definition: tree_node.hpp:2011
Low-level memory addressing.
Definition: tree_node.hpp:4865
This struct specifies the gimple_goto node.
Definition: tree_node.hpp:3089
This struct specifies the for expression Used to represent a for construct.
struct definition of the integer_type tree node.
Definition: tree_node.hpp:2513
struct definition of the integer_type tree node.
Definition: tree_node.hpp:3279
struct definition of the binary node structures.
Definition: tree_node.hpp:1206
This struct specifies the tree_vec node.
Definition: tree_node.hpp:5299
This struct specifies the gimple_asm node.
Definition: tree_node.hpp:1574
This struct specifies the gimple_call node.
Definition: tree_node.hpp:1959
This struct specifies the while expression Used to represent a while construct.
Represents a type expression that will be expanded into a list of types when instantiated with one or...
Definition: tree_node.hpp:2141
Memory tags used in tree-ssa to represent memory locations in virtual SSA.
Definition: tree_node.hpp:1393

sequence of obj that have to be specialized

Definition at line 106 of file tree_node.hpp.

Referenced by function_decl_refs::function_decl_refs(), tree_node_factory::tree_node_factory(), tree_node_finder::tree_node_finder(), tree_node_index_factory::tree_node_index_factory(), tree_node_reached::tree_node_reached(), and type_casting::type_casting().

◆ VISITED_OBJ_SEQ1

sequence of all objects

Definition at line 98 of file tree_node.hpp.

Referenced by object_visitor::~object_visitor().

◆ VISITED_OBJ_SEQ2

#define VISITED_OBJ_SEQ2
Value:
TYPE_NODE_TREE_NODES CONST_OBJ_TREE_NODES DECL_NODE_TREE_NODES BASIC_BLOCK_TREE_NODES \
PANDA_EXTENSION_TREE_NODES
#define DECL_NODE_TREE_NODES
#define GIMPLE_NODES
Definition: tree_common.hpp:96
#define QUATERNARY_EXPRESSION_TREE_NODES
Definition: tree_common.hpp:87
#define MISCELLANEOUS_EXPR_TREE_NODES
Definition: tree_common.hpp:89
#define CONST_OBJ_TREE_NODES

Definition at line 100 of file tree_node.hpp.

Referenced by object_visitor::~object_visitor().

Typedef Documentation

◆ PointToSolutionRef

Definition at line 1073 of file tree_node.hpp.

◆ tree_nodeConstRef

Definition at line 213 of file tree_node.hpp.

◆ tree_nodeRef

RefCount type definition of the tree_node class structure.

Definition at line 212 of file tree_node.hpp.

Function Documentation

◆ CONSTREF_FORWARD_DECL()

CONSTREF_FORWARD_DECL ( tree_node  )

◆ CREATE_TREE_NODE_CLASS() [1/165]

CREATE_TREE_NODE_CLASS ( abs_expr  ,
unary_expr   
)

This struct specifies the abs_expr node.

Represents the absolute value of the operand. An ABS_EXPR must have either an INTEGER_TYPE or a REAL_TYPE. The operand of the ABS_EXPR must have the same type.

◆ CREATE_TREE_NODE_CLASS() [2/165]

CREATE_TREE_NODE_CLASS ( addr_expr  ,
unary_expr   
)

This struct specifies the addr_expr node.

& in C. Value is the address at which the operand's value resides. Operand may have any mode. Result mode is Pmode.

◆ CREATE_TREE_NODE_CLASS() [3/165]

CREATE_TREE_NODE_CLASS ( array_range_ref  ,
quaternary_expr   
)

struct describing an array range.

Likewise an array, except that the result is a range ("slice") of the array. The starting index of the resulting array is taken from operand 1 and the size of the range is taken from the type of the expression.

◆ CREATE_TREE_NODE_CLASS() [4/165]

CREATE_TREE_NODE_CLASS ( array_ref  ,
quaternary_expr   
)

Array indexing.

Operand 0 is the array; operand 1 is a (single) array index. Operand 2, if present, is a copy of TYPE_MIN_VALUE of the index. Operand 3, if present, is the element size, measured in units of the alignment of the element type.

◆ CREATE_TREE_NODE_CLASS() [5/165]

CREATE_TREE_NODE_CLASS ( alignof_expr  ,
unary_expr   
)

This struct represent alignof_expr.

◆ CREATE_TREE_NODE_CLASS() [6/165]

CREATE_TREE_NODE_CLASS ( arrow_expr  ,
unary_expr   
)

This struct represent arrow_expr.

◆ CREATE_TREE_NODE_CLASS() [7/165]

CREATE_TREE_NODE_CLASS ( assert_expr  ,
binary_expr   
)

This struct specifies the assert_expr node.

◆ CREATE_TREE_NODE_CLASS() [8/165]

CREATE_TREE_NODE_CLASS ( bit_and_expr  ,
binary_expr   
)

This struct specifies the bit_and_expr node.

Bitwise operation. Operands have same mode as result.

◆ CREATE_TREE_NODE_CLASS() [9/165]

CREATE_TREE_NODE_CLASS ( bit_field_ref  ,
ternary_expr   
)

This struct specifies the bit_field_ref node.

Reference to a group of bits within an object. Similar to COMPONENT_REF except the position is given explicitly rather than via a FIELD_DECL. Operand 0 is the structure or union expression; operand 1 is a tree giving the number of bits being referenced; operand 2 is a tree giving the position of the first referenced bit. The field can be either a signed or unsigned field; BIT_FIELD_REF_UNSIGNED says which.

◆ CREATE_TREE_NODE_CLASS() [10/165]

CREATE_TREE_NODE_CLASS ( bit_ior_expr  ,
binary_expr   
)

This struct specifies the bit_ior_expr node.

Bitwise operation. Operands have same mode as result.

◆ CREATE_TREE_NODE_CLASS() [11/165]

CREATE_TREE_NODE_CLASS ( bit_ior_concat_expr  ,
ternary_expr   
)

This struct specifies a concatenation between in1 and in2 using in3 bits.

Bitwise operation. Operands have same mode as result.

◆ CREATE_TREE_NODE_CLASS() [12/165]

CREATE_TREE_NODE_CLASS ( bit_not_expr  ,
unary_expr   
)

This struct specifies the bit_not_expr node.

Bitwise operation. Operands have same mode as result.

◆ CREATE_TREE_NODE_CLASS() [13/165]

CREATE_TREE_NODE_CLASS ( bit_xor_expr  ,
binary_expr   
)

This struct specifies the bit_xor_expr node.

Bitwise operation. Operands have same mode as result.

◆ CREATE_TREE_NODE_CLASS() [14/165]

CREATE_TREE_NODE_CLASS ( boolean_type  ,
type_node   
)

struct definition of the boolean_type tree node.

The tree walker structure of this node is: #(TOK_BOOLEAN_TYPE type_node)

◆ CREATE_TREE_NODE_CLASS() [15/165]

CREATE_TREE_NODE_CLASS ( buffer_ref  ,
unary_expr   
)

This struct specifies the buffer_ref node.

Pascal ^ on a file. One operand, an expression for the file.

◆ CREATE_TREE_NODE_CLASS() [16/165]

CREATE_TREE_NODE_CLASS ( card_expr  ,
unary_expr   
)

This struct specifies the card_expr node.

Operation for Pascal sets.

◆ CREATE_TREE_NODE_CLASS() [17/165]

CREATE_TREE_NODE_CLASS ( catch_expr  ,
binary_expr   
)

This struct specifies the catch_expr node.

Evaluate operand 1. If and only if an exception is thrown during the evaluation of operand 1, evaluate operand 2. This differs from TRY_FINALLY_EXPR in that operand 2 is not evaluated on a normal or jump exit, only on an exception.

◆ CREATE_TREE_NODE_CLASS() [18/165]

CREATE_TREE_NODE_CLASS ( ceil_div_expr  ,
binary_expr   
)

This struct specifies the ceil_div_expr node.

Division for integer result that rounds the quotient toward infinity.

◆ CREATE_TREE_NODE_CLASS() [19/165]

CREATE_TREE_NODE_CLASS ( ceil_mod_expr  ,
binary_expr   
)

This struct specifies the ceil_mod_expr node.

Kind of remainder that go with the kind of division.

◆ CREATE_TREE_NODE_CLASS() [20/165]

CREATE_TREE_NODE_CLASS ( CharType  ,
type_node   
)

struct definition of the CharType tree node.

The tree walker structure of this node is: #(TOK_CHAR_TYPE type_node)

◆ CREATE_TREE_NODE_CLASS() [21/165]

CREATE_TREE_NODE_CLASS ( nullptr_type  ,
type_node   
)

The C++ decltype(nullptr) type.

◆ CREATE_TREE_NODE_CLASS() [22/165]

CREATE_TREE_NODE_CLASS ( cleanup_point_expr  ,
unary_expr   
)

This struct specifies the cleanup_point_expr node.

As a consequence, the operand of a CLEANUP_POINT_EXPR must not have BLKmode, because it will not be forced out of memory.

◆ CREATE_TREE_NODE_CLASS() [23/165]

CREATE_TREE_NODE_CLASS ( complex_expr  ,
binary_expr   
)

This struct specifies the complex_expr node.

Given two real or integer operands of the same type, returns a complex value of the corresponding complex type.

◆ CREATE_TREE_NODE_CLASS() [24/165]

CREATE_TREE_NODE_CLASS ( component_ref  ,
ternary_expr   
)

Value is structure or union component.

Operand 0 is the structure or union (an expression). Operand 1 is the field (a node of type FIELD_DECL). Operand 2, if present, is the value of DECL_FIELD_OFFSET, measured in units of DECL_OFFSET_ALIGN / BITS_PER_UNIT.

◆ CREATE_TREE_NODE_CLASS() [25/165]

CREATE_TREE_NODE_CLASS ( compound_expr  ,
binary_expr   
)

This struct specifies the compound_expr node.

Contains two expressions to compute, one followed by the other. The first value is ignored. The second one's value is used. The type of the first expression need not agree with the other types.

◆ CREATE_TREE_NODE_CLASS() [26/165]

CREATE_TREE_NODE_CLASS ( cond_expr  ,
ternary_expr   
)

This struct specifies the cond_expr node.

Conditional expression ( ... ? ... : ... in C). Operand 0 is the condition. Operand 1 is the then-value. Operand 2 is the else-value. Operand 0 may be of any type. Operand 1 must have the same type as the entire expression, unless it unconditionally throws an exception, in which case it should have VOID_TYPE. The same constraints apply to operand 2.

◆ CREATE_TREE_NODE_CLASS() [27/165]

CREATE_TREE_NODE_CLASS ( conj_expr  ,
unary_expr   
)

This struct specifies the conj_expr node.

Complex conjugate of operand. Used only on complex types.

◆ CREATE_TREE_NODE_CLASS() [28/165]

CREATE_TREE_NODE_CLASS ( convert_expr  ,
unary_expr   
)

This struct specifies the convert_expr node.

Represents a conversion of type of a value. All conversions, including implicit ones, must be represented by CONVERT_EXPR or NOP_EXPR nodes.

◆ CREATE_TREE_NODE_CLASS() [29/165]

CREATE_TREE_NODE_CLASS ( ctor_initializer  ,
tree_node   
)

CTOR_INITIALIZER is a placeholder in template code for a call to setup_vtbl_pointer (and appears in all functions, not just ctors)

◆ CREATE_TREE_NODE_CLASS() [30/165]

CREATE_TREE_NODE_CLASS ( eh_filter_expr  ,
binary_expr   
)

This struct specifies the eh_filter_expr node.

Used to represent an exception specification. EH_FILTER_TYPES is a list of allowed types, and EH_FILTER_FAILURE is an expression to evaluate on failure. EH_FILTER_MUST_NOT_THROW controls which range type to use when expanding.

◆ CREATE_TREE_NODE_CLASS() [31/165]

CREATE_TREE_NODE_CLASS ( eq_expr  ,
binary_expr   
)

This struct specifies the eq_expr node.

Relational operators. EQ_EXPR is allowed for any types. The operands will have the same type, and the value is always the type used by the language for Boolean.

◆ CREATE_TREE_NODE_CLASS() [32/165]

CREATE_TREE_NODE_CLASS ( exact_div_expr  ,
binary_expr   
)

This struct specifies the exact_div_expr node.

Division which is not supposed to need rounding. Used for pointer subtraction in C.

◆ CREATE_TREE_NODE_CLASS() [33/165]

CREATE_TREE_NODE_CLASS ( exit_expr  ,
unary_expr   
)

This struct specifies the exit_expr node.

Exit the inner most loop conditionally. The operand is the condition. The type should be void and the value should be ignored.

◆ CREATE_TREE_NODE_CLASS() [34/165]

CREATE_TREE_NODE_CLASS ( fdesc_expr  ,
binary_expr   
)

This struct specifies the fdesc_expr node.

Operand 0 is a function constant; result is part N of a function descriptor of type ptr_mode.

◆ CREATE_TREE_NODE_CLASS() [35/165]

CREATE_TREE_NODE_CLASS ( fix_ceil_expr  ,
unary_expr   
)

This struct specifies the fix_ceil_expr node.

Conversion of real to fixed point.

◆ CREATE_TREE_NODE_CLASS() [36/165]

CREATE_TREE_NODE_CLASS ( fix_floor_expr  ,
unary_expr   
)

This struct specifies the fix_floor_expr node.

Conversion of real to fixed point

◆ CREATE_TREE_NODE_CLASS() [37/165]

CREATE_TREE_NODE_CLASS ( fix_round_expr  ,
unary_expr   
)

This struct specifies the fix_round_expr node.

Conversion of real to fixed point

◆ CREATE_TREE_NODE_CLASS() [38/165]

CREATE_TREE_NODE_CLASS ( fix_trunc_expr  ,
unary_expr   
)

This struct specifies the fix_trunc_expr node.

Conversion of real to fixed point.

◆ CREATE_TREE_NODE_CLASS() [39/165]

CREATE_TREE_NODE_CLASS ( float_expr  ,
unary_expr   
)

This struct specifies the float_expr node.

Conversion of an integer to a real.

◆ CREATE_TREE_NODE_CLASS() [40/165]

CREATE_TREE_NODE_CLASS ( floor_div_expr  ,
binary_expr   
)

This struct specifies the floor_div_expr node.

Division for integer result that rounds toward minus infinity.

◆ CREATE_TREE_NODE_CLASS() [41/165]

CREATE_TREE_NODE_CLASS ( floor_mod_expr  ,
binary_expr   
)

This struct specifies the floor_mod_expr node.

Kind of remainder that go with the kind of division.

◆ CREATE_TREE_NODE_CLASS() [42/165]

CREATE_TREE_NODE_CLASS ( ge_expr  ,
binary_expr   
)

This struct specifies the ge_expr node.

Relational operator. GE_EXPR is allowed only for integer (or pointer or enumerate) or real types. The operands will have the same type, and the value is always the type used by the language for Boolean.

◆ CREATE_TREE_NODE_CLASS() [43/165]

CREATE_TREE_NODE_CLASS ( goto_subroutine  ,
binary_expr   
)

This struct specifies the goto_subroutine node.

Used internally for cleanups in the implementation of TRY_FINALLY_EXPR. (Specifically, it is created by expand_expr, not front-ends.) Operand 0 is the rtx for the start of the subroutine we need to call. Operand 1 is the rtx for a variable in which to store the address of where the subroutine should return to.

◆ CREATE_TREE_NODE_CLASS() [44/165]

CREATE_TREE_NODE_CLASS ( gt_expr  ,
binary_expr   
)

This struct specifies the gt_expr node.

Relational operator. GT_EXPR is allowed only for integer (or pointer or enumerate) or real types. The operands will have the same type, and the value is always the type used by the language for Boolean.

◆ CREATE_TREE_NODE_CLASS() [45/165]

CREATE_TREE_NODE_CLASS ( imagpart_expr  ,
unary_expr   
)

This struct specifies the imagpart_expr node.

Used only on an operand of complex type, this return a value of the corresponding component type.

◆ CREATE_TREE_NODE_CLASS() [46/165]

CREATE_TREE_NODE_CLASS ( indirect_ref  ,
unary_expr   
)

This struct specifies the indirect_ref node.

C unary `*' or Pascal `^'. One operand, an expression for a pointer.

◆ CREATE_TREE_NODE_CLASS() [47/165]

CREATE_TREE_NODE_CLASS ( misaligned_indirect_ref  ,
unary_expr   
)

This struct specifies the misaligned version of the indirect_ref node.

◆ CREATE_TREE_NODE_CLASS() [48/165]

CREATE_TREE_NODE_CLASS ( in_expr  ,
binary_expr   
)

This struct specifies the in_expr node.

Operation for Pascal sets.

◆ CREATE_TREE_NODE_CLASS() [49/165]

CREATE_TREE_NODE_CLASS ( init_expr  ,
binary_expr   
)

This struct specifies the init_expr node.

Initialization expression. Operand 0 is the variable to initialize; Operand 1 is the initializer.

◆ CREATE_TREE_NODE_CLASS() [50/165]

CREATE_TREE_NODE_CLASS ( label_decl  ,
decl_node   
)

struct definition of the label_decl tree node.

The tree walker structure of this node is: #(TOK_LABEL_DECL decl_node (uid)?)

◆ CREATE_TREE_NODE_CLASS() [51/165]

CREATE_TREE_NODE_CLASS ( lang_type  ,
type_node   
)

struct definition of the lang_type tree node.

The tree walker structure of this node is: #(TOK_LANG_TYPE type_node);

◆ CREATE_TREE_NODE_CLASS() [52/165]

CREATE_TREE_NODE_CLASS ( le_expr  ,
binary_expr   
)

This struct specifies the le_expr node.

Relational operator.LE_EXPR is allowed only for integer (or pointer or enumerate) or real types. The operands will have the same type, and the value is always the type used by the language for Boolean.

◆ CREATE_TREE_NODE_CLASS() [53/165]

CREATE_TREE_NODE_CLASS ( loop_expr  ,
unary_expr   
)

A loop.

The operand is the body of the loop. It must contain an EXIT_EXPR or is an infinite loop. The type should be void and the value should be ignored.

◆ CREATE_TREE_NODE_CLASS() [54/165]

CREATE_TREE_NODE_CLASS ( lrotate_expr  ,
binary_expr   
)

This struct specifies the lrotate_expr node.

Shift operation for rotate. Shift means logical shift if done on an unsigned type, arithmetic shift if done on a signed type. The second operand is the number of bits to shift by; it need not be the same type as the first operand and result. Note that the result is undefined if the second operand is larger than the first operand's type size.

◆ CREATE_TREE_NODE_CLASS() [55/165]

CREATE_TREE_NODE_CLASS ( lshift_expr  ,
binary_expr   
)

This struct specifies the lshift_expr node.

Shift operation for shift. Shift means logical shift if done on an unsigned type, arithmetic shift if done on a signed type. The second operand is the number of bits to shift by; it need not be the same type as the first operand and result. Note that the result is undefined if the second operand is larger than the first operand's type size.

◆ CREATE_TREE_NODE_CLASS() [56/165]

CREATE_TREE_NODE_CLASS ( lt_expr  ,
binary_expr   
)

This struct specifies the lt_expr node.

Relational operator. LT_EXPR is allowed only for integer (or pointer or enumerate) or real types. The operands will have the same type, and the value is always the type used by the language for Boolean.

◆ CREATE_TREE_NODE_CLASS() [57/165]

CREATE_TREE_NODE_CLASS ( ltgt_expr  ,
binary_expr   
)

This struct specifies the ltgt_expr node.

This is the reverse of uneq_expr.

◆ CREATE_TREE_NODE_CLASS() [58/165]

CREATE_TREE_NODE_CLASS ( max_expr  ,
binary_expr   
)

This struct specifies the max_expr node.

◆ CREATE_TREE_NODE_CLASS() [59/165]

CREATE_TREE_NODE_CLASS ( mem_ref  ,
binary_expr   
)

Memory addressing.

Operands are a pointer and a tree constant integer byte offset of the pointer type that when de-referenced yields the type of the base object the pointer points into and which is used for TBAA purposes. The type of the MEM_REF is the type the bytes at the memory location are interpreted as. MEM_REF <p, c> is equivalent to ((typeof(c))p)->x... where x... is a chain of component references offsetting p by c.

◆ CREATE_TREE_NODE_CLASS() [60/165]

CREATE_TREE_NODE_CLASS ( min_expr  ,
binary_expr   
)

This struct specifies the min_expr node.

◆ CREATE_TREE_NODE_CLASS() [61/165]

CREATE_TREE_NODE_CLASS ( minus_expr  ,
binary_expr   
)

This struct specifies the minus_expr node.

Simple arithmetic.

◆ CREATE_TREE_NODE_CLASS() [62/165]

CREATE_TREE_NODE_CLASS ( modify_expr  ,
binary_expr   
)

This struct specifies the modify_expr node.

Assignment expression. The first operand is the what to set; the second, the new value.

◆ CREATE_TREE_NODE_CLASS() [63/165]

CREATE_TREE_NODE_CLASS ( modop_expr  ,
expr_node   
)

This struct represent one of the bunch of tree codes for the initial, superficial parsing of templates.

◆ CREATE_TREE_NODE_CLASS() [64/165]

CREATE_TREE_NODE_CLASS ( mult_expr  ,
binary_expr   
)

This struct specifies the mult_expr node.

Simple arithmetic.

◆ CREATE_TREE_NODE_CLASS() [65/165]

CREATE_TREE_NODE_CLASS ( mult_highpart_expr  ,
binary_expr   
)

This struct specifies the mult_highpart_expr node.

Highpart multiplication. For an integral type with precision B, returns bits [2B-1, B] of the full 2*B product.

◆ CREATE_TREE_NODE_CLASS() [66/165]

CREATE_TREE_NODE_CLASS ( ne_expr  ,
binary_expr   
)

This struct specifies the ne_expr node.

Relational operators. NE_EXPR is allowed for any types. The operands will have the same type, and the value is always the type used by the language for Boolean.

◆ CREATE_TREE_NODE_CLASS() [67/165]

CREATE_TREE_NODE_CLASS ( negate_expr  ,
unary_expr   
)

This struct specifies the negate_expr node.

Unary negation.

◆ CREATE_TREE_NODE_CLASS() [68/165]

CREATE_TREE_NODE_CLASS ( new_expr  ,
expr_node   
)

This struct represent a 'new' expression.

◆ CREATE_TREE_NODE_CLASS() [69/165]

CREATE_TREE_NODE_CLASS ( non_lvalue_expr  ,
unary_expr   
)

This struct specifies the non_lvalue_expr node.

Value is same as argument, but guaranteed not an lvalue.

◆ CREATE_TREE_NODE_CLASS() [70/165]

CREATE_TREE_NODE_CLASS ( nop_expr  ,
unary_expr   
)

This struct specifies the nop_expr node.

Represents a conversion expected to require no code to be generated.

◆ CREATE_TREE_NODE_CLASS() [71/165]

CREATE_TREE_NODE_CLASS ( obj_type_ref  ,
ternary_expr   
)

Used to represent lookup of runtime type dependent data.

Often this is a reference to a vtable, but it needn't be. Operands are: OBJ_TYPE_REF_EXPR: An expression that evaluates the value to use. OBJ_TYPE_REF_OBJECT: Is the object on whose behalf the lookup is being performed. Through this the optimizer may be able to statically determine the dynamic type of the object. OBJ_TYPE_REF_TOKEN: Something front-end specific used to resolve the reference to something simpler, usually to the address of a DECL. Never touched by the middle-end. Good choices would be either an identifier or a vtable index.

◆ CREATE_TREE_NODE_CLASS() [72/165]

CREATE_TREE_NODE_CLASS ( offset_type  ,
type_node   
)

struct definition of the offset_type tree node.

The tree walker structure of this node is: #(TOK_OFFSET_TYPE type_node)

◆ CREATE_TREE_NODE_CLASS() [73/165]

CREATE_TREE_NODE_CLASS ( ordered_expr  ,
binary_expr   
)

This struct specifies the ordered_expr node.

Additional relational operator for floating point unordered.

◆ CREATE_TREE_NODE_CLASS() [74/165]

CREATE_TREE_NODE_CLASS ( placeholder_expr  ,
expr_node   
)

This struct specifies the placeholder_expr node.

Such a "self-references" is done using a PLACEHOLDER_EXPR. This is a node that will later be replaced with the object being referenced. Its type is that of the object and selects which object to use from a chain of references (see below). No other slots are used in the PLACEHOLDER_EXPR. This node denotes a record to later be substituted before evaluating this expression. The type of this expression is used to find the record to replace it.

◆ CREATE_TREE_NODE_CLASS() [75/165]

CREATE_TREE_NODE_CLASS ( plus_expr  ,
binary_expr   
)

This struct specifies the plus_expr node.

Simple arithmetic.

◆ CREATE_TREE_NODE_CLASS() [76/165]

CREATE_TREE_NODE_CLASS ( pointer_plus_expr  ,
binary_expr   
)

Pointer addition.

The first operand is always a pointer and the second operand is an integer of type sizetype.

◆ CREATE_TREE_NODE_CLASS() [77/165]

CREATE_TREE_NODE_CLASS ( postdecrement_expr  ,
binary_expr   
)

This struct specifies the postdecrement_expr node.

struct for – in C. The second arg is how much to increment by. For a pointer, it would be the size of the object pointed to.

◆ CREATE_TREE_NODE_CLASS() [78/165]

CREATE_TREE_NODE_CLASS ( postincrement_expr  ,
binary_expr   
)

This struct specifies the postincrement_expr node.

struct for ++ in C. The second arg is how much to increment by. For a pointer, it would be the size of the object pointed to.

◆ CREATE_TREE_NODE_CLASS() [79/165]

CREATE_TREE_NODE_CLASS ( predecrement_expr  ,
binary_expr   
)

This struct specifies the predecrement_expr node.

struct for – in C. The second arg is how much to increment by. For a pointer, it would be the size of the object pointed to.

◆ CREATE_TREE_NODE_CLASS() [80/165]

CREATE_TREE_NODE_CLASS ( preincrement_expr  ,
binary_expr   
)

This struct specifies the preincrement_expr node.

struct for ++ in C. The second arg is how much to increment by. For a pointer, it would be the size of the object pointed to.

◆ CREATE_TREE_NODE_CLASS() [81/165]

CREATE_TREE_NODE_CLASS ( qual_union_type  ,
type_node   
)

struct definition of the qual_union_type tree node.

The tree walker structure of this node is: #(TOK_QUAL_UNION_TYPE type_node);

◆ CREATE_TREE_NODE_CLASS() [82/165]

CREATE_TREE_NODE_CLASS ( range_expr  ,
binary_expr   
)

This struct specifies the range_expr node.

Operation for Pascal sets.

◆ CREATE_TREE_NODE_CLASS() [83/165]

CREATE_TREE_NODE_CLASS ( paren_expr  ,
unary_expr   
)

Represents a re-association barrier for floating point expressions like explicit parenthesis in fortran.

◆ CREATE_TREE_NODE_CLASS() [84/165]

CREATE_TREE_NODE_CLASS ( rdiv_expr  ,
binary_expr   
)

This struct specifies the rdiv_expr node.

Division for real result.

◆ CREATE_TREE_NODE_CLASS() [85/165]

CREATE_TREE_NODE_CLASS ( realpart_expr  ,
unary_expr   
)

This struct specifies the realpart_expr node.

Used only on an operand of complex type, this return a value of the corresponding component type.

◆ CREATE_TREE_NODE_CLASS() [86/165]

CREATE_TREE_NODE_CLASS ( reduc_max_expr  ,
unary_expr   
)

Reduction operations.

Operations that take a vector of elements and "reduce" it to a scalar result (e.g. summing the elements of the vector, finding the minimum over the vector elements, etc). Operand 0 is a vector; the first element in the vector has the result. Operand 1 is a vector.

◆ CREATE_TREE_NODE_CLASS() [87/165]

CREATE_TREE_NODE_CLASS ( reduc_min_expr  ,
unary_expr   
)

◆ CREATE_TREE_NODE_CLASS() [88/165]

CREATE_TREE_NODE_CLASS ( reduc_plus_expr  ,
unary_expr   
)

◆ CREATE_TREE_NODE_CLASS() [89/165]

CREATE_TREE_NODE_CLASS ( reference_expr  ,
unary_expr   
)

This struct specifies the reference_expr node.

Non-lvalue reference or pointer to an object.

◆ CREATE_TREE_NODE_CLASS() [90/165]

CREATE_TREE_NODE_CLASS ( reinterpret_cast_expr  ,
unary_expr   
)

This struct represent one of tree codes for the initial, superficial parsing of templates.

◆ CREATE_TREE_NODE_CLASS() [91/165]

CREATE_TREE_NODE_CLASS ( round_div_expr  ,
binary_expr   
)

This struct specifies the round_div_expr node.

Division for integer result that rounds toward nearest integer.

◆ CREATE_TREE_NODE_CLASS() [92/165]

CREATE_TREE_NODE_CLASS ( round_mod_expr  ,
binary_expr   
)

This struct specifies the round_mod_expr node.

Kind of remainder that go with the kind of division.

◆ CREATE_TREE_NODE_CLASS() [93/165]

CREATE_TREE_NODE_CLASS ( rrotate_expr  ,
binary_expr   
)

This struct specifies the rrotate_expr node.

Shift operation for rotate. Shift means logical shift if done on an unsigned type, arithmetic shift if done on a signed type. The second operand is the number of bits to shift by; it need not be the same type as the first operand and result. Note that the result is undefined if the second operand is larger than the first operand's type size.

◆ CREATE_TREE_NODE_CLASS() [94/165]

CREATE_TREE_NODE_CLASS ( rshift_expr  ,
binary_expr   
)

This struct specifies the rshift_expr node.

Shift operation for shift. Shift means logical shift if done on an unsigned type, arithmetic shift if done on a signed type. The second operand is the number of bits to shift by; it need not be the same type as the first operand and result. Note that the result is undefined if the second operand is larger than the first operand's type size.

◆ CREATE_TREE_NODE_CLASS() [95/165]

CREATE_TREE_NODE_CLASS ( save_expr  ,
ternary_expr   
)

This struct specifies the save_expr node.

Represents something we computed once and will use multiple times. First operand is that expression. Second is the function decl in which the SAVE_EXPR was created. The third operand is the RTL, nonzero only after the expression has been computed.

◆ CREATE_TREE_NODE_CLASS() [96/165]

CREATE_TREE_NODE_CLASS ( set_le_expr  ,
binary_expr   
)

This struct specifies the set_le_expr node.

Operation for Pascal sets.

◆ CREATE_TREE_NODE_CLASS() [97/165]

CREATE_TREE_NODE_CLASS ( set_type  ,
type_node   
)

struct definition of the set_type tree node.

The tree walker structure of this node is: #(TOK_SET_TYPE type_node)

◆ CREATE_TREE_NODE_CLASS() [98/165]

CREATE_TREE_NODE_CLASS ( sizeof_expr  ,
unary_expr   
)

This struct specifies the sizeof_expr node.

Represents the size value of the operand.

◆ CREATE_TREE_NODE_CLASS() [99/165]

CREATE_TREE_NODE_CLASS ( static_cast_expr  ,
unary_expr   
)

This struct specifies the static_cast_expr node.

The walker for this struct is #(TOK_STATIC_CAST_EXPR wunary_expr);

◆ CREATE_TREE_NODE_CLASS() [100/165]

CREATE_TREE_NODE_CLASS ( template_id_expr  ,
expr_node   
)

This struct represents a template identifier.

◆ CREATE_TREE_NODE_CLASS() [101/165]

CREATE_TREE_NODE_CLASS ( template_type_parm  ,
type_node   
)

struct definition of the template_type_parm tree node.

The tree walker structure of this node is: #(TOK_TEMPLATE_TYPE_PARM type_node)

◆ CREATE_TREE_NODE_CLASS() [102/165]

CREATE_TREE_NODE_CLASS ( ternary_plus_expr  ,
ternary_expr   
)

This struct specifies the a + b + c node.

Simple arithmetic.

◆ CREATE_TREE_NODE_CLASS() [103/165]

CREATE_TREE_NODE_CLASS ( ternary_pm_expr  ,
ternary_expr   
)

This struct specifies the a + b - c node.

Simple arithmetic.

◆ CREATE_TREE_NODE_CLASS() [104/165]

CREATE_TREE_NODE_CLASS ( ternary_mp_expr  ,
ternary_expr   
)

This struct specifies the a - b + c node.

Simple arithmetic.

◆ CREATE_TREE_NODE_CLASS() [105/165]

CREATE_TREE_NODE_CLASS ( ternary_mm_expr  ,
ternary_expr   
)

This struct specifies the a - b - c node.

Simple arithmetic.

◆ CREATE_TREE_NODE_CLASS() [106/165]

CREATE_TREE_NODE_CLASS ( throw_expr  ,
unary_expr   
)

This struct represents a throw expression.

◆ CREATE_TREE_NODE_CLASS() [107/165]

CREATE_TREE_NODE_CLASS ( trait_expr  ,
tree_node   
)

Represents a trait expression during template expansion.

◆ CREATE_TREE_NODE_CLASS() [108/165]

CREATE_TREE_NODE_CLASS ( translation_unit_decl  ,
decl_node   
)

struct definition of the translation_unit_decl tree node.

The tree walker structure of this node is: #(TOK_TRANSLATION_UNIT_DECL decl_node)

◆ CREATE_TREE_NODE_CLASS() [109/165]

CREATE_TREE_NODE_CLASS ( trunc_div_expr  ,
binary_expr   
)

This struct specifies the trunc_div_expr node.

Division for integer result that rounds the quotient toward zero.

◆ CREATE_TREE_NODE_CLASS() [110/165]

CREATE_TREE_NODE_CLASS ( trunc_mod_expr  ,
binary_expr   
)

This struct specifies the trunc_mod_expr node.

Kind of remainder that go with the kind of division.

◆ CREATE_TREE_NODE_CLASS() [111/165]

CREATE_TREE_NODE_CLASS ( truth_and_expr  ,
binary_expr   
)

This struct specifies the truth_and_expr node.

AND always compute the second operand whether its value is needed or not (for side effects). The operand may have BOOLEAN_TYPE or INTEGER_TYPE. The argument will be either zero or one.

◆ CREATE_TREE_NODE_CLASS() [112/165]

CREATE_TREE_NODE_CLASS ( truth_andif_expr  ,
binary_expr   
)

This struct specifies the truth_andif_expr node.

ANDIF allow the second operand not to be computed if the value of the expression is determined from the first operand. The operand may have BOOLEAN_TYPE or INTEGER_TYPE. The argument will be either zero or one.

◆ CREATE_TREE_NODE_CLASS() [113/165]

CREATE_TREE_NODE_CLASS ( truth_not_expr  ,
unary_expr   
)

This struct specifies the truth_not_expr node.

The operand may have BOOLEAN_TYPE or INTEGER_TYPE. In either case, the argument will be either zero or one. TRUTH_NOT_EXPR will never have an INTEGER_TYPE VAR_DECL as its argument.

◆ CREATE_TREE_NODE_CLASS() [114/165]

CREATE_TREE_NODE_CLASS ( truth_or_expr  ,
binary_expr   
)

This struct specifies the truth_or_expr node.

The operand may have BOOLEAN_TYPE or INTEGER_TYPE. the argument will be either zero or one.

◆ CREATE_TREE_NODE_CLASS() [115/165]

CREATE_TREE_NODE_CLASS ( truth_orif_expr  ,
binary_expr   
)

This struct specifies the truth_orif_expr node.

ORIF allow the second operand not to be computed if the value of the expression is determined from the first operand. The operand may have BOOLEAN_TYPE or INTEGER_TYPE. The argument will be either zero or one.

◆ CREATE_TREE_NODE_CLASS() [116/165]

CREATE_TREE_NODE_CLASS ( truth_xor_expr  ,
binary_expr   
)

This struct specifies the truth_xor_expr node.

XOR always compute the second operand whether its value is needed or not (for side effects). The operand may have BOOLEAN_TYPE or INTEGER_TYPE. The argument will be either zero or one.

◆ CREATE_TREE_NODE_CLASS() [117/165]

CREATE_TREE_NODE_CLASS ( try_catch_expr  ,
binary_expr   
)

This struct specifies the try_catch_expr node.

Evaluate operand 1. If and only if an exception is thrown during the evaluation of operand 1, evaluate operand 2. This differs from TRY_FINALLY_EXPR in that operand 2 is not evaluated on a normal or jump exit, only on an exception.

◆ CREATE_TREE_NODE_CLASS() [118/165]

CREATE_TREE_NODE_CLASS ( try_finally  ,
binary_expr   
)

This struct specifies the try_finally node.

Evaluate the first operand. The second operand is a cleanup expression which is evaluated on any exit (normal, exception, or jump out) from this expression.

◆ CREATE_TREE_NODE_CLASS() [119/165]

CREATE_TREE_NODE_CLASS ( typename_type  ,
type_node   
)

struct definition of the typename_type tree node.

The tree walker structure of this node is: #(TOK_TYPENAME_TYPE type_node)

◆ CREATE_TREE_NODE_CLASS() [120/165]

CREATE_TREE_NODE_CLASS ( uneq_expr  ,
binary_expr   
)

This struct specifies the uneq_expr node.

This is equivalent to unordered or ...

◆ CREATE_TREE_NODE_CLASS() [121/165]

CREATE_TREE_NODE_CLASS ( unge_expr  ,
binary_expr   
)

This struct specifies the unge_expr node.

This is equivalent to unordered or ...

◆ CREATE_TREE_NODE_CLASS() [122/165]

CREATE_TREE_NODE_CLASS ( ungt_expr  ,
binary_expr   
)

This struct specifies the ungt_expr node.

This is equivalent to unordered or ...

◆ CREATE_TREE_NODE_CLASS() [123/165]

CREATE_TREE_NODE_CLASS ( unle_expr  ,
binary_expr   
)

This struct specifies the unle_expr node.

This is equivalent to unordered or ...

◆ CREATE_TREE_NODE_CLASS() [124/165]

CREATE_TREE_NODE_CLASS ( unlt_expr  ,
binary_expr   
)

This struct specifies the unlt_expr node.

This is equivalent to unordered or ...

◆ CREATE_TREE_NODE_CLASS() [125/165]

CREATE_TREE_NODE_CLASS ( unordered_expr  ,
binary_expr   
)

This struct specifies the unordered_expr node.

Additional relational operator for floating point unordered.

◆ CREATE_TREE_NODE_CLASS() [126/165]

CREATE_TREE_NODE_CLASS ( unsave_expr  ,
unary_expr   
)

This struct specifies the unsave_expr node.

The operand is the value to unsave. By unsave, we mean that all _EXPRs such as TARGET_EXPRs, SAVE_EXPRs, CALL_EXPRs and RTL_EXPRs, that are protected from being evaluated more than once should be reset so that a new expand_expr call of this expr will cause those to be re-evaluated. This is useful when we want to reuse a tree in different places, but where we must re-expand.

◆ CREATE_TREE_NODE_CLASS() [127/165]

CREATE_TREE_NODE_CLASS ( using_decl  ,
decl_node   
)

A using declaration.

USING_DECL_SCOPE contains the specified scope. In a member using decl, unless DECL_DEPENDENT_P is true, USING_DECL_DECLS contains the _DECL or OVERLOAD so named. This is not an alias, but is later expanded into multiple aliases.

◆ CREATE_TREE_NODE_CLASS() [128/165]

CREATE_TREE_NODE_CLASS ( va_arg_expr  ,
unary_expr   
)

This struct specifies the va_arg_expr node.

Used to implement `va_arg'.

◆ CREATE_TREE_NODE_CLASS() [129/165]

CREATE_TREE_NODE_CLASS ( dot_prod_expr  ,
ternary_expr   
)

Widening dot-product.

The first two arguments are of type t1. The third argument and the result are of type t2, such that t2 is at least twice the size of t1. DOT_PROD_EXPR(arg1,arg2,arg3) is equivalent to: tmp = WIDEN_MULT_EXPR(arg1, arg2); arg3 = PLUS_EXPR (tmp, arg3); or: tmp = WIDEN_MULT_EXPR(arg1, arg2); arg3 = WIDEN_SUM_EXPR (tmp, arg3);

◆ CREATE_TREE_NODE_CLASS() [130/165]

CREATE_TREE_NODE_CLASS ( vec_cond_expr  ,
ternary_expr   
)

Vector conditional expression.

It is like COND_EXPR, but with vector operands.

A = VEC_COND_EXPR ( X < Y, B, C)

means

for (i=0; i<N; i++) A[i] = X[i] < Y[i] ? B[i] : C[i];

◆ CREATE_TREE_NODE_CLASS() [131/165]

CREATE_TREE_NODE_CLASS ( vec_perm_expr  ,
ternary_expr   
)

Vector permutation expression.

A = VEC_PERM_EXPR<v0, v1, mask> means

N = length(mask) foreach i in N: M = mask[i] % (2*N) A = M < N ? v0[M] : v1[M-N]

V0 and V1 are vectors of the same type. MASK is an integer-typed vector. The number of MASK elements must be the same with the number of elements in V0 and V1. The size of the inner type of the MASK and of the V0 and V1 must be the same.

◆ CREATE_TREE_NODE_CLASS() [132/165]

CREATE_TREE_NODE_CLASS ( vec_lshift_expr  ,
binary_expr   
)

Whole vector left/right shift in bits.

Operand 0 is a vector to be shifted. Operand 1 is an integer shift amount in bits.

◆ CREATE_TREE_NODE_CLASS() [133/165]

CREATE_TREE_NODE_CLASS ( vec_rshift_expr  ,
binary_expr   
)

◆ CREATE_TREE_NODE_CLASS() [134/165]

CREATE_TREE_NODE_CLASS ( widen_mult_hi_expr  ,
binary_expr   
)

Widening vector multiplication.

The two operands are vectors with N elements of size S. Multiplying the elements of the two vectors will result in N products of size 2*S. VEC_WIDEN_MULT_HI_EXPR computes the N/2 high products. VEC_WIDEN_MULT_LO_EXPR computes the N/2 low products.

◆ CREATE_TREE_NODE_CLASS() [135/165]

CREATE_TREE_NODE_CLASS ( widen_mult_lo_expr  ,
binary_expr   
)

◆ CREATE_TREE_NODE_CLASS() [136/165]

CREATE_TREE_NODE_CLASS ( vec_unpack_hi_expr  ,
unary_expr   
)

Unpack (extract and promote/widen) the high/low elements of the input vector into the output vector.

The input vector has twice as many elements as the output vector, that are half the size of the elements of the output vector. This is used to support type promotion.

◆ CREATE_TREE_NODE_CLASS() [137/165]

CREATE_TREE_NODE_CLASS ( vec_unpack_lo_expr  ,
unary_expr   
)

◆ CREATE_TREE_NODE_CLASS() [138/165]

CREATE_TREE_NODE_CLASS ( vec_unpack_float_hi_expr  ,
unary_expr   
)

Unpack (extract) the high/low elements of the input vector, convert fixed point values to floating point and widen elements into the output vector.

The input vector has twice as many elements as the output vector, that are half the size of the elements of the output vector.

◆ CREATE_TREE_NODE_CLASS() [139/165]

CREATE_TREE_NODE_CLASS ( vec_unpack_float_lo_expr  ,
unary_expr   
)

◆ CREATE_TREE_NODE_CLASS() [140/165]

CREATE_TREE_NODE_CLASS ( vec_pack_trunc_expr  ,
binary_expr   
)

Pack (demote/narrow and merge) the elements of the two input vectors into the output vector using truncation/saturation.

The elements of the input vectors are twice the size of the elements of the output vector. This is used to support type demotion.

◆ CREATE_TREE_NODE_CLASS() [141/165]

CREATE_TREE_NODE_CLASS ( vec_pack_sat_expr  ,
binary_expr   
)

◆ CREATE_TREE_NODE_CLASS() [142/165]

CREATE_TREE_NODE_CLASS ( vec_pack_fix_trunc_expr  ,
binary_expr   
)

Convert floating point values of the two input vectors to integer and pack (narrow and merge) the elements into the output vector.

The elements of the input vector are twice the size of the elements of the output vector.

◆ CREATE_TREE_NODE_CLASS() [143/165]

CREATE_TREE_NODE_CLASS ( vec_extracteven_expr  ,
binary_expr   
)

Extract even/odd fields from vectors.

◆ CREATE_TREE_NODE_CLASS() [144/165]

CREATE_TREE_NODE_CLASS ( vec_extractodd_expr  ,
binary_expr   
)

◆ CREATE_TREE_NODE_CLASS() [145/165]

CREATE_TREE_NODE_CLASS ( vec_interleavehigh_expr  ,
binary_expr   
)

Merge input vectors interleaving their fields.

◆ CREATE_TREE_NODE_CLASS() [146/165]

CREATE_TREE_NODE_CLASS ( vec_interleavelow_expr  ,
binary_expr   
)

◆ CREATE_TREE_NODE_CLASS() [147/165]

CREATE_TREE_NODE_CLASS ( vec_new_expr  ,
expr_node   
)

This struct represents a vector new expression.

◆ CREATE_TREE_NODE_CLASS() [148/165]

CREATE_TREE_NODE_CLASS ( void_cst  ,
cst_node   
)

VOID_CST node.

◆ CREATE_TREE_NODE_CLASS() [149/165]

CREATE_TREE_NODE_CLASS ( view_convert_expr  ,
unary_expr   
)

This struct specifies the view_convert_expr node.

Represents viewing something of one type as being of a second type. This corresponds to an "Unchecked Conversion" in Ada and roughly to the idiom *(type2 *)&X in C. The only operand is the value to be viewed as being of another type. It is undefined if the type of the input and of the expression have different sizes.

This code may also be used within the LHS of a MODIFY_EXPR, in which case no actual data motion may occur. TREE_ADDRESSABLE will be set in this case and GCC must abort if it could not do the operation without generating insns.

◆ CREATE_TREE_NODE_CLASS() [150/165]

CREATE_TREE_NODE_CLASS ( void_type  ,
type_node   
)

struct definition of the void_type tree node.

The tree walker structure of this node is: #(TOK_VOID_TYPE type_node);

◆ CREATE_TREE_NODE_CLASS() [151/165]

CREATE_TREE_NODE_CLASS ( vtable_ref  ,
ternary_expr   
)

This struct specifies the vtable_ref node.

Vtable indexing. Carries data useful for emitting information for vtable garbage collection. Operand 0: an array_ref (or equivalent expression) Operand 1: the vtable base (must be a var_decl) Operand 2: index into vtable (must be an integer_cst).

◆ CREATE_TREE_NODE_CLASS() [152/165]

CREATE_TREE_NODE_CLASS ( with_cleanup_expr  ,
ternary_expr   
)

This struct specifies the with_cleanup_expr node.

Specify a value to compute along with its corresponding cleanup. Operand 0 argument is an expression whose value needs a cleanup. Operand 1 is the cleanup expression for the object. Operand 2 is an RTL_EXPR which will eventually represent that value. The RTL_EXPR is used in this expression, which is how the expression manages to act on the proper value. The cleanup is executed by the first enclosing CLEANUP_POINT_EXPR, if it exists, otherwise it is the responsibility of the caller to manually call expand_start_target_temps/expand_end_target_temps, as needed. This differs from TRY_CATCH_EXPR in that operand 2 is always evaluated when an exception isn't thrown when cleanups are run.

◆ CREATE_TREE_NODE_CLASS() [153/165]

CREATE_TREE_NODE_CLASS ( with_size_expr  ,
binary_expr   
)

Records the size for an expression of variable size type.

This is for use in contexts in which we are accessing the entire object, such as for a function call, or block copy. Operand 0 is the real expression. Operand 1 is the size of the type in the expression.

◆ CREATE_TREE_NODE_CLASS() [154/165]

CREATE_TREE_NODE_CLASS ( widen_sum_expr  ,
binary_expr   
)

Widening summation.

The first argument is of type t1. The second argument is of type t2, such that t2 is at least twice the size of t1. The type of the entire expression is also t2. WIDEN_SUM_EXPR is equivalent to first widening (promoting) the first argument from type t1 to type t2, and then summing it with the second argument.

◆ CREATE_TREE_NODE_CLASS() [155/165]

CREATE_TREE_NODE_CLASS ( widen_mult_expr  ,
binary_expr   
)

Widening multiplication.

The two arguments are of type t1. The result is of type t2, such that t2 is at least twice the size of t1. WIDEN_MULT_EXPR is equivalent to first widening (promoting) the arguments from type t1 to type t2, and then multiplying them.

◆ CREATE_TREE_NODE_CLASS() [156/165]

CREATE_TREE_NODE_CLASS ( extract_bit_expr  ,
binary_expr   
)

extract_bit_expr extracts a bit value from a SSA/integer const op0 is the SSA variable op1 is the bit position return a Boolean value

◆ CREATE_TREE_NODE_CLASS() [157/165]

CREATE_TREE_NODE_CLASS ( sat_plus_expr  ,
binary_expr   
)

This struct specifies the sat_plus_expr node.

Simple arithmetic.

◆ CREATE_TREE_NODE_CLASS() [158/165]

CREATE_TREE_NODE_CLASS ( sat_minus_expr  ,
binary_expr   
)

This struct specifies the sat_minus_expr node.

Simple arithmetic.

◆ CREATE_TREE_NODE_CLASS() [159/165]

CREATE_TREE_NODE_CLASS ( fshl_expr  ,
ternary_expr   
)

This struct specifies the fshl_expr node.

Simple arithmetic.

◆ CREATE_TREE_NODE_CLASS() [160/165]

CREATE_TREE_NODE_CLASS ( fshr_expr  ,
ternary_expr   
)

This struct specifies the fshr_expr node.

Simple arithmetic.

◆ CREATE_TREE_NODE_CLASS() [161/165]

CREATE_TREE_NODE_CLASS ( extractvalue_expr  ,
binary_expr   
)

This struct specifies the extractvalue_expr node.

extract a value from an aggregate.

◆ CREATE_TREE_NODE_CLASS() [162/165]

CREATE_TREE_NODE_CLASS ( insertvalue_expr  ,
ternary_expr   
)

This struct specifies the insertvalue_expr node.

insert a value into an aggregate.

◆ CREATE_TREE_NODE_CLASS() [163/165]

CREATE_TREE_NODE_CLASS ( extractelement_expr  ,
binary_expr   
)

This struct specifies the extractelement_expr node.

extract a value from a vector.

◆ CREATE_TREE_NODE_CLASS() [164/165]

CREATE_TREE_NODE_CLASS ( insertelement_expr  ,
ternary_expr   
)

This struct specifies the insertelement_expr node.

insert a value into a vector.

◆ CREATE_TREE_NODE_CLASS() [165/165]

CREATE_TREE_NODE_CLASS ( frem_expr  ,
binary_expr   
)

This struct specifies the frem node.

Simple arithmetic.

◆ REF_FORWARD_DECL() [1/4]

REF_FORWARD_DECL ( bloc  )

◆ REF_FORWARD_DECL() [2/4]

REF_FORWARD_DECL ( tree_manager  )

◆ REF_FORWARD_DECL() [3/4]

REF_FORWARD_DECL ( tree_node  )

◆ REF_FORWARD_DECL() [4/4]

REF_FORWARD_DECL ( Range  )

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