PandA-2024.02
Macros | Enumerations
tree_common.hpp File Reference

This C++ header file contains common macros for the tree structure. More...

#include <string>
#include "refcount.hpp"
#include <boost/preprocessor/cat.hpp>
#include <boost/preprocessor/seq/for_each.hpp>
Include dependency graph for tree_common.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define TREE_NODE_NAME(r, data, elem)   #elem,
 STD include. More...
 
#define TREE_NODE_KIND(r, data, elem)   BOOST_PP_CAT(elem, _K),
 
#define UNARY_EXPRESSION_TREE_NODES
 
#define BINARY_EXPRESSION_TREE_NODES
 
#define TERNARY_EXPRESSION_TREE_NODES
 
#define QUATERNARY_EXPRESSION_TREE_NODES   (array_range_ref)(array_ref)
 
#define MISCELLANEOUS_EXPR_TREE_NODES
 
#define PANDA_GIMPLE_NODES   (gimple_for)(gimple_multi_way_if)(gimple_pragma)(gimple_while)
 
#define GIMPLE_NODES
 
#define MISCELLANEOUS_OBJ_TREE_NODES
 
#define TYPE_NODE_TREE_NODES
 
#define CONST_OBJ_TREE_NODES   (complex_cst)(integer_cst)(real_cst)(string_cst)(vector_cst)(void_cst)
 
#define DECL_NODE_TREE_NODES
 
#define CPP_NODES
 
#define CPP_STMT_NODES   (do_stmt)(if_stmt)(for_stmt)(while_stmt)
 
#define BASIC_BLOCK_TREE_NODES   (bloc)
 basic block tree_node More...
 
#define PANDA_PRAGMA_TREE_NODES
 pragma tree_node More...
 
#define PANDA_EXTENSION_TREE_NODES
 
#define GET_KIND(meth)
 Macro which define a function that return the parameter as a enum kind. More...
 

Enumerations

enum  kind : int { BOOST_PP_SEQ_FOR_EACH }
 

Detailed Description

This C++ header file contains common macros for the tree structure.

This C++ header file define some macros useful during the tree structure hierarchy definition and manipulation.

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$

Definition in file tree_common.hpp.

Macro Definition Documentation

◆ BASIC_BLOCK_TREE_NODES

#define BASIC_BLOCK_TREE_NODES   (bloc)

basic block tree_node

Definition at line 125 of file tree_common.hpp.

◆ BINARY_EXPRESSION_TREE_NODES

#define BINARY_EXPRESSION_TREE_NODES
Value:
(assert_expr)(bit_and_expr)(bit_ior_expr)(bit_xor_expr)(catch_expr)(ceil_div_expr)(ceil_mod_expr)(complex_expr)( \
compound_expr)(eh_filter_expr)(eq_expr)(exact_div_expr)(fdesc_expr)(floor_div_expr)(floor_mod_expr)(ge_expr)( \
gt_expr)(goto_subroutine)(in_expr)(init_expr)(le_expr)(lrotate_expr)(lshift_expr)(lt_expr)(max_expr)(mem_ref)( \
min_expr)(minus_expr)(modify_expr)(mult_expr)(mult_highpart_expr)(ne_expr)(ordered_expr)(plus_expr)( \
pointer_plus_expr)(postdecrement_expr)(postincrement_expr)(predecrement_expr)(preincrement_expr)(range_expr)( \
rdiv_expr)(round_div_expr)(round_mod_expr)(rrotate_expr)(rshift_expr)(set_le_expr)(trunc_div_expr)( \
trunc_mod_expr)(truth_and_expr)(truth_andif_expr)(truth_or_expr)(truth_orif_expr)(truth_xor_expr)( \
try_catch_expr)(try_finally)(uneq_expr)(ltgt_expr)(unge_expr)(ungt_expr)(unle_expr)(unlt_expr)(unordered_expr)( \
widen_sum_expr)(widen_mult_expr)(with_size_expr)(vec_lshift_expr)(vec_rshift_expr)(widen_mult_hi_expr)( \
widen_mult_lo_expr)(vec_pack_trunc_expr)(vec_pack_sat_expr)(vec_pack_fix_trunc_expr)(vec_extracteven_expr)( \
vec_extractodd_expr)(vec_interleavehigh_expr)(vec_interleavelow_expr)(extract_bit_expr)(sat_plus_expr)( \
sat_minus_expr)(extractvalue_expr)(extractelement_expr)(frem_expr)

Definition at line 68 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

◆ CONST_OBJ_TREE_NODES

#define CONST_OBJ_TREE_NODES   (complex_cst)(integer_cst)(real_cst)(string_cst)(vector_cst)(void_cst)

Definition at line 111 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

◆ CPP_NODES

#define CPP_NODES
Value:
(aggr_init_expr)(ctor_initializer)(expr_stmt)(if_stmt)(for_stmt)(handler)(modop_expr)(new_expr)(nullptr_type)( \
vec_new_expr)(while_stmt)(nontype_argument_pack)(expr_pack_expansion)
() label_decl()() modop_expr() new_expr() placeholder_expr() template_id_expr(vec_new_expr)) BOOST_PP_SEQ_FOR_EACH(VISIT_TREE_NODE_MACRO
A HANDLER wraps a catch handler for the HANDLER_TYPE.
Definition: tree_node.hpp:3141
AGGR_INIT_EXPRs have a variably-sized representation similar to that of CALL_EXPRs.
Definition: tree_node.hpp:1919
struct definition of the template_decl tree node.
Definition: tree_node.hpp:4993
This struct represents a try-block statement.
Definition: tree_node.hpp:5409
This struct represents a list-like node for chaining overloading candidates.
Definition: tree_node.hpp:3621
Represents an expression that will be expanded into a list of expressions when instantiated with one ...
Definition: tree_node.hpp:2186
This struct represent a statement expression.
Definition: tree_node.hpp:2592
This struct specifies reference to particular overloaded struct method The tree walker structure of t...
Definition: tree_node.hpp:4463
This struct represent a &#39;return&#39; statement.
Definition: tree_node.hpp:4387

Definition at line 117 of file tree_common.hpp.

◆ CPP_STMT_NODES

#define CPP_STMT_NODES   (do_stmt)(if_stmt)(for_stmt)(while_stmt)

Definition at line 122 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

◆ DECL_NODE_TREE_NODES

#define DECL_NODE_TREE_NODES
Value:
translation_unit_decl)(type_decl)(using_decl)(var_decl)
struct definition of the type_decl tree node.
Definition: tree_node.hpp:5470
struct definition of the const_decl tree node.
Definition: tree_node.hpp:2386
struct definition of the function_decl tree node.
Definition: tree_node.hpp:2759
struct definition of the parm_decl tree node.
Definition: tree_node.hpp:3660
struct definition of the template_decl tree node.
Definition: tree_node.hpp:4993
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
struct definition of the result_decl tree node.
Definition: tree_node.hpp:4266
() label_decl() using_decl(translation_unit_decl)) BOOST_PP_SEQ_FOR_EACH(VISIT_TREE_NODE_MACRO
struct definition of the field_decl tree node.
Definition: tree_node.hpp:2640

Definition at line 113 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

◆ GET_KIND

#define GET_KIND (   meth)

◆ GIMPLE_NODES

#define GIMPLE_NODES
Value:
This struct specifies the gimple_label node.
Definition: tree_node.hpp:3343
GIMPLE_BIND <VARS, BLOCK, BODY> represents a lexical scope.
Definition: tree_node.hpp:1664
This struct specifies the gimple_cond node.
Definition: tree_node.hpp:2345
This struct specifies the gimple_assign node (GCC 4.3 tree node).
Definition: tree_node.hpp:3015
This struct specifies the gimple_return node.
Definition: tree_node.hpp:4354
GIMPLE_SWITCH <INDEX, DEFAULT_LAB, LAB1, ..., LABN> represents the multiway branch: ...
Definition: tree_node.hpp:4773
This struct specifies the gimple_goto node.
Definition: tree_node.hpp:3089
This struct specifies a hint for branch prediction.
Definition: tree_node.hpp:3846
This struct specifies the gimple_asm node.
Definition: tree_node.hpp:1574
This struct specifies the gimple_call node.
Definition: tree_node.hpp:1959

Definition at line 96 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

◆ MISCELLANEOUS_EXPR_TREE_NODES

#define MISCELLANEOUS_EXPR_TREE_NODES
Value:
(call_expr)(aggr_init_expr)(case_label_expr)(lut_expr)(modop_expr)(new_expr)(placeholder_expr)(scope_ref)( \
target_expr)(target_mem_ref)(target_mem_ref461)(template_id_expr)(trait_expr)(vec_new_expr)( \
nontype_argument_pack)(expr_pack_expansion)(cast_expr)
() label_decl()() modop_expr() new_expr() placeholder_expr() template_id_expr(vec_new_expr)) BOOST_PP_SEQ_FOR_EACH(VISIT_TREE_NODE_MACRO
AGGR_INIT_EXPRs have a variably-sized representation similar to that of CALL_EXPRs.
Definition: tree_node.hpp:1919
Low-level memory addressing.
Definition: tree_node.hpp:4938
Represents an expression that will be expanded into a list of expressions when instantiated with one ...
Definition: tree_node.hpp:2186
This struct specifies the cast_expr node.
Definition: tree_node.hpp:2057
This struct specifies the lut_expr node.
Definition: tree_node.hpp:6042
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
This struct specifies the case_label_expr node.
Definition: tree_node.hpp:2011
Low-level memory addressing.
Definition: tree_node.hpp:4865

Definition at line 89 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

◆ MISCELLANEOUS_OBJ_TREE_NODES

#define MISCELLANEOUS_OBJ_TREE_NODES
Value:
tree_vec)(try_block)
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
This class is used to perform the re-index of all tree nodes.
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
This struct represents a try-block statement.
Definition: tree_node.hpp:5409
This struct represents a list-like node for chaining overloading candidates.
Definition: tree_node.hpp:3621
struct definition of the function_decl tree node.
Definition: tree_node.hpp:3179
This struct specifies the block node.
Definition: tree_node.hpp:1820
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 represent a &#39;return&#39; statement.
Definition: tree_node.hpp:4387
This struct specifies the ssa_name node.
Definition: tree_node.hpp:4523

Definition at line 100 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

◆ PANDA_EXTENSION_TREE_NODES

#define PANDA_EXTENSION_TREE_NODES
Value:
PANDA_PRAGMA_TREE_NODES \
PANDA_GIMPLE_NODES

Definition at line 134 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

◆ PANDA_GIMPLE_NODES

#define PANDA_GIMPLE_NODES   (gimple_for)(gimple_multi_way_if)(gimple_pragma)(gimple_while)

Definition at line 94 of file tree_common.hpp.

◆ PANDA_PRAGMA_TREE_NODES

#define PANDA_PRAGMA_TREE_NODES

◆ QUATERNARY_EXPRESSION_TREE_NODES

#define QUATERNARY_EXPRESSION_TREE_NODES   (array_range_ref)(array_ref)

Definition at line 87 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

◆ TERNARY_EXPRESSION_TREE_NODES

#define TERNARY_EXPRESSION_TREE_NODES
Value:
(bit_field_ref)(bit_ior_concat_expr)(component_ref)(cond_expr)(vec_cond_expr)(vec_perm_expr)(dot_prod_expr)( \
obj_type_ref)(save_expr)(ternary_plus_expr)(ternary_pm_expr)(ternary_mp_expr)(ternary_mm_expr)(vtable_ref)( \
with_cleanup_expr)(fshl_expr)(fshr_expr)(insertvalue_expr)(insertelement_expr)

Definition at line 82 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

◆ TREE_NODE_KIND

#define TREE_NODE_KIND (   r,
  data,
  elem 
)    BOOST_PP_CAT(elem, _K),

Definition at line 58 of file tree_common.hpp.

◆ TREE_NODE_NAME

#define TREE_NODE_NAME (   r,
  data,
  elem 
)    #elem,

STD include.

Utility include

Definition at line 56 of file tree_common.hpp.

◆ TYPE_NODE_TREE_NODES

#define TYPE_NODE_TREE_NODES
Value:
(array_type)(boolean_type)(CharType)(nullptr_type)(type_pack_expansion)(complex_type)(enumeral_type)( \
function_type)(integer_type)(lang_type)(method_type)(offset_type)(pointer_type)(qual_union_type)(real_type)( \
record_type)(reference_type)(set_type)(template_type_parm)(typename_type)(union_type)(vector_type)( \
type_argument_pack)(void_type)
() 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
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
struct definition of the method_type tree node.
Definition: tree_node.hpp:3452
struct definition of the union_type tree node.
Definition: tree_node.hpp:5540
struct definition of the record_type tree node.
Definition: tree_node.hpp:4078
struct definition of the function_type tree node.
Definition: tree_node.hpp:2960
struct definition of the complex_type tree node.
Definition: tree_node.hpp:2282
struct definition of the pointer_type tree node.
Definition: tree_node.hpp:3896
struct definition of the reference_type tree node.
Definition: tree_node.hpp:4220
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
Represents a type expression that will be expanded into a list of types when instantiated with one or...
Definition: tree_node.hpp:2141

Definition at line 105 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

◆ UNARY_EXPRESSION_TREE_NODES

#define UNARY_EXPRESSION_TREE_NODES
Value:
(abs_expr)(addr_expr)(alignof_expr)(arrow_expr)(bit_not_expr)(buffer_ref)(card_expr)(cleanup_point_expr)( \
conj_expr)(convert_expr)(exit_expr)(fix_ceil_expr)(fix_floor_expr)(fix_round_expr)(fix_trunc_expr)(float_expr)( \
imagpart_expr)(indirect_ref)(misaligned_indirect_ref)(loop_expr)(negate_expr)(non_lvalue_expr)(nop_expr)( \
realpart_expr)(reference_expr)(reinterpret_cast_expr)(sizeof_expr)(static_cast_expr)(throw_expr)( \
truth_not_expr)(unsave_expr)(va_arg_expr)(view_convert_expr)(reduc_max_expr)(reduc_min_expr)(reduc_plus_expr)( \
vec_unpack_hi_expr)(vec_unpack_lo_expr)(vec_unpack_float_hi_expr)(vec_unpack_float_lo_expr)(paren_expr)

Definition at line 60 of file tree_common.hpp.

Referenced by tree_node::get_kind(), and tree_node::GetString().

Enumeration Type Documentation

◆ kind

enum kind : int
Enumerator
BOOST_PP_SEQ_FOR_EACH 

Definition at line 138 of file tree_common.hpp.


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