00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef __GSPIN_TEL_H__
00029 #define __GSPIN_TEL_H__
00030
00031
00032
00033 extern gs_t gs_program;
00034
00035 extern gs_t gs_build_int_cst(gs_long_long_t n);
00036 extern gs_t gs_build_decl(gs_code_t code, gs_t node2);
00037 extern gs_t gs_build_if_stmt(gs_t k0, gs_t k1, gs_t k2);
00038 extern gs_t gs_build_pointer_type(gs_t node);
00039 extern gs_t gs_build_target_expr(gs_t k0, gs_t k1, gs_t k2, gs_t k3);
00040 extern gs_t gs_c_common_truthvalue_conversion(gs_t node);
00041 extern gs_t gs_strip_nops(gs_t node);
00042 #ifdef FE_GNU_4_2_0
00043 extern gs_t gs_build_2(gs_tree_code_class_t code_class,
00044 gs_code_t code, gs_t k0, gs_t k1);
00045 #endif
00046
00047
00048
00049
00050
00051
00052
00053 #define GS_CC1_COMMAND_LINE_ARGS 0
00054 #define GS_GLOBAL_TREES_LIST 1
00055 #define GS_INTEGER_TYPES_LIST 2
00056 #define GS_PROGRAM_DECLARATIONS 3
00057 #define GS_GXX_EMITTED_DECLS 4
00058 #define GS_GXX_EMITTED_ASMS 5
00059 #define GS_PROGRAM_FLAGS 6
00060
00061 # define GS_FLAG_ERRNO_MATH 1
00062 # define GS_PRAGMA_IMPLEMENTATION 2
00063 # define GS_PRAGMA_INTERFACE 3
00064
00065 #define GS_WEAK_DECLS 7
00066 #define GS_PROGRAM_LAST 8
00067
00068
00069
00070
00071
00072
00073
00074
00075 #define GS_TREE_CODE_CLASS 0
00076 #define GS_TREE_TYPE 1
00077 #define GS_TREE_CHAIN 2
00078 #define GS_FLAGS 3 // Assume 64-bit IB_BIT_VECTOR.
00079
00080
00081 # define GS_TREE_SIDE_EFFECTS 0
00082 # define GS_TYPE_READONLY 1
00083 # define GS_TREE_READONLY GS_TYPE_READONLY
00084 # define GS_TREE_CONSTANT 2
00085 # define GS_TYPE_SIZES_GIMPLIFIED GS_TREE_CONSTANT
00086 # define GS_TREE_INVARIANT 3
00087 # define GS_TREE_ADDRESSABLE 4
00088 # define GS_TREE_THIS_VOLATILE 5
00089 # define GS_TREE_ASM_WRITTEN 6
00090 # define GS_TREE_USED 7
00091 # define GS_TREE_NOTHROW 8
00092 # define GS_TREE_PUBLIC 9
00093 # define GS_ASM_VOLATILE_P GS_TREE_PUBLIC
00094 # define GS_TREE_PRIVATE 10
00095 # define GS_TREE_PROTECTED 11
00096 # define GS_TREE_STATIC 12
00097 # define GS_DWARF_ACCESS_FLAG_0 13
00098 # define GS_DWARF_ACCESS_FLAG_1 14
00099 # define GS_TREE_LANG_FLAG_0 15
00100 # define GS_TREE_LANG_FLAG_1 16
00101 # define GS_TREE_LANG_FLAG_2 17
00102 # define GS_TREE_LANG_FLAG_3 18
00103 # define GS_TREE_LANG_FLAG_4 19
00104 # define GS_TREE_LANG_FLAG_5 20
00105 # define GS_TREE_LANG_FLAG_6 21
00106 # define GS_TREE_NOT_EMITTED_BY_GXX 22
00107
00108
00109
00110 # define GS_DECL_UNSIGNED 23
00111 # define GS_DECL_IGNORED_P 24
00112 # define GS_DECL_ABSTRACT 25
00113 # define GS_DECL_IN_SYSTEM_HEADER 26
00114 # define GS_DECL_COMMON 27
00115 # define GS_DECL_EXTERNAL 28
00116 # define GS_DECL_WEAK 29
00117 # define GS_DECL_REGISTER 30
00118 # define GS_DECL_NONLOCAL 31
00119 # define GS_TYPE_DECL_SUPPRESS_DEBUG 32
00120 # define GS_DECL_NEEDED GS_TYPE_DECL_SUPPRESS_DEBUG
00121 # define GS_DECL_INLINE 33
00122 # define GS_DECL_DECLARED_INLINE_P 34
00123 # define GS_DECL_BUILT_IN 35
00124 # define GS_DECL_NO_STATIC_CHAIN 36
00125 # define GS_DECL_PACKED 37
00126 # define GS_DECL_REACHABLE GS_DECL_PACKED
00127 # define GS_DECL_BIT_FIELD 38
00128 # define GS_DECL_NONADDRESSABLE_P 39
00129 # define GS_DECL_EMITTED_BY_GXX 40
00130 # define GS_DECL_IN_TEXT_SECTION 41
00131 # define GS_DECL_THREAD_LOCAL 42
00132 # define GS_DECL_TRANSPARENT_UNION 43
00133 # define GS_DECL_VIRTUAL_P 44
00134 # define GS_DECL_DEFER_OUTPUT 45
00135 # define GS_DECL_PRESERVE_P 46
00136 # define GS_DECL_LANG_FLAG_0 47
00137 # define GS_DECL_LANG_FLAG_1 48
00138 # define GS_DECL_LANG_FLAG_2 49
00139 # define GS_DECL_LANG_FLAG_3 50
00140 # define GS_DECL_LANG_FLAG_4 51
00141 # define GS_DECL_LANG_FLAG_5 52
00142 # define GS_DECL_LANG_FLAG_6 53
00143 # define GS_DECL_LANG_FLAG_7 54
00144 # define GS_DECL_USER_ALIGN 55
00145 # define GS_DECL_OFFSET_ALIGN 56
00146 # define GS_DECL_POINTER_ALIAS_SET 57
00147 # define GS_DECL_THUNK_P 58
00148 # define GS_DECL_ASSEMBLER_NAME_SET_P 59
00149 # define GS_DECL_ARTIFICIAL 60
00150 # define GS_DECL_LANG_SPECIFIC 61
00151 # define GS_DECL_THREADPRIVATE 62 // RECYCLE
00152 #ifdef FE_GNU_4_2_0
00153 # define GS_C_DECL_THREADPRIVATE_P GS_DECL_LANG_FLAG_3
00154 #endif
00155
00156
00157 # define GS_TYPE_UNSIGNED 23
00158 # define GS_TYPE_NO_FORCE_BLK 24
00159 # define GS_TYPE_IS_SIZETYPE GS_TYPE_NO_FORCE_BLK
00160 # define GS_TYPE_RETURNS_STACK_DEPRESSED GS_TYPE_NO_FORCE_BLK
00161 # define GS_TYPE_STRING_FLAG 25
00162 # define GS_TYPE_NEEDS_CONSTRUCTING 26
00163 # define GS_TYPE_TRANSPARENT_UNION 27
00164 # define GS_TYPE_NONALIASED_COMPONENT GS_TYPE_TRANSPARENT_UNION
00165 # define GS_TYPE_PACKED 28
00166 # define GS_TYPE_RESTRICT 29
00167 # define GS_TYPE_LANG_FLAG_0 30
00168 # define GS_TYPE_LANG_FLAG_1 31
00169 # define GS_TYPE_LANG_FLAG_2 32
00170 # define GS_TYPE_LANG_FLAG_3 33
00171 # define GS_TYPE_LANG_FLAG_4 34
00172 # define GS_TYPE_LANG_FLAG_5 35
00173 # define GS_TYPE_LANG_FLAG_6 36
00174 # define GS_TYPE_VOLATILE 37
00175 # define GS_TYPE_LANG_SPECIFIC 38
00176 # define GS_POINTER_TYPE_P 39
00177 # define GS_AGGREGATE_VALUE_P 40
00178 # define GS_TYPE_BIG_ENDIAN 41
00179 # define GS_TYPE_LITTLE_ENDIAN 42
00180 # define GS_TYPE_EXPLICIT_ENDIAN 43
00181
00182
00183
00184 # define GS_BIT_FIELD_REF_UNSIGNED 23
00185 # define GS_EXPR_HAS_LOCATION 24
00186
00187 # define GS_EMIT_TARGET_EXPR_CLEANUP 26
00188
00189
00190 # define GS_TREE_CONSTANT_OVERFLOW 23
00191 # define GS_TREE_OVERFLOW 24
00192 # define GS_REAL_VALUE_ISINF 25
00193 # define GS_REAL_VALUE_ISNAN 26
00194 # define GS_BINFO_VIRTUAL_P GS_TREE_CONSTANT_OVERFLOW // TREE_BINFO
00195 # define GS_TREE_SYMBOL_REFERENCED GS_TREE_STATIC
00196
00197
00198
00199
00200
00201 #define GS_DECL_NAME 4
00202 #define GS_DECL_MODE 5
00203 #define GS_DECL_SOURCE_FILE 6
00204 #define GS_DECL_SOURCE_LINE 7
00205 #define GS_DECL_SIZE 8
00206 #define GS_DECL_SIZE_UNIT 9
00207 #define GS_DECL_BUILT_IN_CLASS 10
00208 #define GS_DECL_FUNCTION_CODE 11
00209 #define GS_DECL_FIELD_OFFSET 12
00210 #define GS_DECL_FIELD_BIT_OFFSET 13
00211 #define GS_DECL_CONTEXT 14
00212 #define GS_DECL_ATTRIBUTES 15
00213 #define GS_DECL_ABSTRACT_ORIGIN 16
00214 #define GS_DECL_ARGUMENTS 17
00215 #define GS_DECL_ANON_UNION_ELEMS GS_DECL_ARGUMENTS
00216 #define GS_DECL_INITIAL 18
00217 #define GS_DECL_ARG_TYPE 19
00218 #define GS_DECL_ARG_TYPE_AS_WRITTEN 20
00219 #define GS_DECL_SAVED_TREE 21
00220 #define GS_DECL_VALUE_EXPR GS_DECL_SAVED_TREE
00221 #define GS_DECL_RESULT 22
00222 #define GS_DECL_ORIGINAL_TYPE GS_DECL_RESULT
00223 #define GS_LABEL_DECL_UID 23
00224 #define GS_DECL_UID 24
00225 #define GS_DECL_ALIGN_UNIT 25
00226 #define GS_DECL_ASSEMBLER_NAME 26
00227 #define GS_DECL_ALIAS_TARGET 27
00228 #define GS_DECL_ASMREG 28
00229
00230 #define GS_CP_DECL_FLAGS 29
00231
00232 # define GS_DECL_COMDAT 0
00233 # define GS_DECL_GLOBAL_CTOR_P 1
00234 # define GS_DECL_GLOBAL_DTOR_P 2
00235 # define GS_DECL_ONE_ONLY 3
00236 # define GS_DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P 4
00237 # define GS_DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P 5
00238 # define GS_DECL_FUNCTION_MEMBER_P 6
00239 # define GS_DECL_USES_TEMPLATE_PARMS 7
00240 # define GS_DECL_COPY_CONSTRUCTOR_P 8
00241 # define GS_DECL_IMPLICIT_INSTANTIATION 9
00242 # define GS_DECL_NAMESPACE_SCOPE_P 10
00243 #ifdef FE_GNU_4_2_0
00244 # define GS_CP_DECL_THREADPRIVATE_P 11
00245 #else
00246
00247 #endif
00248 # define GS_DECL_COMPLETE_CONSTRUCTOR_P 12
00249 # define GS_DECL_REALLY_EXTERN 13
00250 # define GS_DECL_USE_TEMPLATE 14
00251 # define GS_DECL_TEMPLATE_INSTANTIATED 15
00252 # define GS_DECL_TEMPLATE_SPECIALIZATION 16
00253 # define GS_DECL_PURE_VIRTUAL_P 17
00254 # define GS_DECL_THIS_THUNK_P 18
00255 # define GS_DECL_EXTERN_C_P 19
00256 #ifdef FE_GNU_4_2_0
00257 # define GS_DECL_CONSTRUCTOR_P GS_CP_DECL_THREADPRIVATE_P
00258 # define GS_DECL_COMPLETE_DESTRUCTOR_P 20
00259 # define GS_DECL_HAS_IN_CHARGE_PARM_P 21
00260 # define GS_DECL_HAS_VTT_PARM_P 22
00261 # define GS_DECL_ASSIGNMENT_OPERATOR_P 23
00262 #endif
00263
00264 #define GS_DECL_TEMPLATE_INFO 30
00265 #define GS_DECL_SECTION_NAME 31
00266 #define GS_CP_NAMESPACE_DECLS 32
00267 #define GS_CP_DECL_CONTEXT 33
00268 #define GS_DECL_VINDEX 34
00269 #define GS_MOST_GENERAL_TEMPLATE 35
00270 #define GS_DECL_NAMESPACE_ALIAS 36
00271 #define GS_THUNK_TARGET 37
00272 #define GS_DECL_TI_TEMPLATE 38
00273 #define GS_THUNK_FIXED_OFFSET 39
00274 #define GS_THUNK_VIRTUAL_OFFSET 40
00275 #define GS_DECL_NAMED_RETURN_OBJECT 41
00276
00277
00278
00279
00280
00281
00282 #define GS_TYPE_NAME 4
00283 #define GS_TYPE_MODE 5
00284 #define GS_TYPE_SIZE 6
00285 #define GS_TYPE_SIZE_UNIT 7
00286 #define GS_TYPE_USER_ALIGN 8
00287 #define GS_TYPE_ALIGN 9
00288 #define GS_TYPE_ALIAS_SET 10
00289 #define GS_TYPE_ATTRIBUTES 11
00290 #define GS_TYPE_PRECISION 12
00291 #define GS_TYPE_VECTOR_SUBPARTS GS_TYPE_PRECISION
00292 #define GS_TYPE_MIN_VALUE 13
00293 #define GS_TYPE_MAX_VALUE 14
00294 #define GS_TYPE_VALUES 15
00295 #define GS_TYPE_DOMAIN GS_TYPE_VALUES
00296 #define GS_TYPE_FIELDS GS_TYPE_VALUES
00297 #define GS_TYPE_DEBUG_REPRESENTATION_TYPE GS_TYPE_VALUES
00298 #define GS_TYPE_METHOD_BASETYPE GS_TYPE_MAX_VALUE
00299 #define GS_TYPE_OFFSET_BASETYPE GS_TYPE_MAX_VALUE
00300 #define GS_TYPE_ARG_TYPES 16
00301 #define GS_TYPE_CONTEXT 17
00302 #define GS_TYPE_POINTER_TO 18
00303 #define GS_TYPE_REFERENCE_TO 19
00304 #define GS_TYPE_NEXT_PTR_TO GS_TYPE_MIN_VALUE
00305
00306 #define GS_TYPE_BINFO 20
00307 #define GS_TYPE_MAIN_VARIANT 21
00308 #define GS_CP_TYPE_FLAGS 22
00309
00310 # define GS_TYPE_PTRMEMFUNC_P 0
00311 # define GS_TYPE_PTRMEM_P 1
00312 # define GS_CLASSTYPE_INTERFACE_ONLY 2
00313 # define GS_IS_EMPTY_CLASS 3
00314 # define GS_CLASS_TYPE_P 4
00315 # define GS_ANON_UNION_TYPE_P 5
00316 # define GS_CLASSTYPE_TEMPLATE_SPECIALIZATION 6
00317 # define GS_TYPE_USES_TEMPLATE_PARMS 7
00318 #ifdef FE_GNU_4_2_0
00319 # define GS_CLASSTYPE_NON_POD_P 8
00320 # define GS_TYPE_HAS_DEFAULT_CONSTRUCTOR 9
00321 # define GS_TYPE_HAS_IMPLICIT_COPY_CONSTRUCTOR 10
00322 #endif
00323
00324 #define GS_TYPE_VFIELD GS_TYPE_MIN_VALUE
00325 #define GS_TYPE_METHODS GS_TYPE_MAX_VALUE
00326 #define GS_CLASSTYPE_AS_BASE 23
00327 #define GS_CLASSTYPE_TYPEINFO_VAR 24
00328 #define GS_TYPEINFO_DECL 25
00329 #define GS_CLASSTYPE_COPY_CONSTRUCTOR 26
00330
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343 #define GS_ARITY 4
00344 #define GS_EXPR_FILENAME 5
00345 #define GS_EXPR_LINENO 6
00346
00347
00348
00349
00350
00351 #define GS_TREE_OPERAND_ZERO 7
00352
00353 #define GS_ASM_STRING 7
00354 #define GS_ASM_OUTPUTS 8
00355 #define GS_ASM_INPUTS 9
00356 #define GS_ASM_CLOBBERS 10
00357
00358 #define GS_BIND_EXPR_VARS 7
00359 #define GS_BIND_EXPR_BODY 8
00360 #define GS_BIND_EXPR_BLOCK 9
00361
00362 #define GS_CASE_LOW 7
00363 #define GS_CASE_HIGH 8
00364 #define GS_CASE_LABEL 9
00365
00366 #ifdef FE_GNU_4_2_0
00367 #define GS_CONSTRUCTOR_LENGTH 7
00368 #define GS_CONSTRUCTOR_ELTS_INDEX 8
00369 #define GS_CONSTRUCTOR_ELTS_VALUE 9
00370 #else
00371 #define GS_CONSTRUCTOR_ELTS 7
00372 #endif
00373
00374 #define GS_DECL_EXPR_DECL 7
00375
00376 #define GS_DO_COND 7
00377 #define GS_DO_BODY 8
00378
00379 #define GS_EH_SPEC_STMTS 7
00380 #define GS_EH_SPEC_RAISES 8
00381
00382 #define GS_FOR_INIT_STMT 7
00383 #define GS_FOR_COND 8
00384 #define GS_FOR_EXPR 9
00385 #define GS_FOR_BODY 10
00386
00387 #define GS_EXPR_STMT_EXPR 7
00388
00389 #define GS_HANDLER_PARMS 7
00390 #define GS_HANDLER_BODY 8
00391
00392 #define GS_CLEANUP_BODY 7
00393 #define GS_CLEANUP_EXPR 8
00394
00395 #define GS_CATCH_TYPES 7
00396 #define GS_CATCH_BODY 8
00397
00398 #define GS_IF_COND 7
00399 #define GS_THEN_CLAUSE 8
00400 #define GS_ELSE_CLAUSE 9
00401
00402 #define GS_LABEL_EXPR_LABEL 7
00403
00404 #define GS_LOOP_EXPR_BODY 7
00405
00406 #define GS_TRY_STMTS 7
00407 #define GS_TRY_HANDLERS 8
00408
00409 #define GS_STMT_EXPR_STMT 7
00410
00411 #define GS_WHILE_COND 7
00412 #define GS_WHILE_BODY 8
00413
00414 #define GS_OBJ_TYPE_REF_EXPR 7
00415 #define GS_OBJ_TYPE_REF_OBJECT 8
00416 #define GS_OBJ_TYPE_REF_TOKEN 9
00417
00418 #ifdef FE_GNU_4_2_0
00419 #define GS_OMP_PARALLEL_BODY 7
00420 #define GS_OMP_PARALLEL_CLAUSES 8
00421
00422 #define GS_OMP_CRITICAL_BODY 7
00423 #define GS_OMP_CRITICAL_NAME 8
00424
00425 #define GS_OMP_SECTIONS_BODY 7
00426 #define GS_OMP_SECTIONS_CLAUSES 8
00427
00428 #define GS_OMP_SECTION_BODY 7
00429
00430 #define GS_OMP_SINGLE_BODY 7
00431 #define GS_OMP_SINGLE_CLAUSES 8
00432
00433
00434 #define GS_OMP_FOR_BODY 7
00435 #define GS_OMP_FOR_CLAUSES 8
00436 #define GS_OMP_FOR_INIT 9
00437 #define GS_OMP_FOR_COND 10
00438 #define GS_OMP_FOR_INCR 11
00439
00440 #define GS_OMP_MASTER_BODY 7
00441
00442 #define GS_OMP_ORDERED_BODY 7
00443 #endif
00444
00445
00446 #ifdef FE_GNU_4_2_0
00447 #define GS_CP_EXPR_FLAGS 12
00448 #else
00449 #define GS_CP_EXPR_FLAGS 11
00450 #endif
00451
00452
00453 # define GS_STMT_IS_FULL_EXPR_P 0
00454 # define GS_AGGR_INIT_VIA_CTOR_P 1
00455 # define GS_CLEANUP_EH_ONLY 2
00456
00457
00458
00459
00460
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471 #define GS_TREE_INT_CST_LOW 4
00472 #define GS_TREE_INT_CST_HIGH 5
00473
00474
00475 #define GS_TREE_REAL_CST_F 4
00476 #define GS_TREE_REAL_CST_D 5
00477 #define GS_TREE_REAL_CST_LD 6
00478
00479
00480 #define GS_TREE_VECTOR_CST_ELTS 4
00481
00482
00483 #define GS_TREE_REALPART 4
00484 #define GS_TREE_IMAGPART 5
00485
00486
00487 #define GS_EXPANDED_PTRMEM_CST 4 // result of cplus_expand_constant's
00488
00489
00490 #define GS_TREE_STRING_POINTER 4
00491 #define GS_TREE_STRING_LENGTH 5
00492
00493
00494
00495
00496
00497
00498
00499 #define GS_IDENTIFIER_POINTER 4
00500
00501
00502 #define GS_TREE_PURPOSE 4
00503 #define GS_TREE_VALUE 5
00504
00505
00506 #define GS_TREE_VEC_LENGTH 4
00507 #define GS_TREE_VEC_ELT 5
00508
00509
00510 #define GS_STATEMENT_LIST_ELTS 4
00511
00512
00513 #define GS_BINFO_TYPE 4
00514 #define GS_BINFO_BASE_BINFOS 5 // gspin list
00515 #define GS_BINFO_VPTR_FIELD 6
00516
00517
00518 #define GS_BLOCK_VARS 4
00519 #define GS_BLOCK_SUPERCONTEXT 5
00520 #define GS_BLOCK_SUBBLOCKS 6
00521 #define GS_BLOCK_CHAIN 7
00522 #define GS_BLOCK_ABSTRACT_ORIGIN 8
00523
00524
00525 #define GS_TEMPLATE_PARM_IDX 4
00526 #define GS_TEMPLATE_PARM_LEVEL 5
00527 #define GS_TEMPLATE_PARM_DESCENDANTS 6
00528 #define GS_TEMPLATE_PARM_ORIG_LEVEL 7
00529 #define GS_TEMPLATE_PARM_DECL 8
00530
00531
00532 #define GS_BASELINK_BINFO 4
00533 #define GS_BASELINK_FUNCTIONS 5
00534 #define GS_BASELINK_ACCESS_BINFO 6
00535 #define GS_BASELINK_OPTYPE 7
00536
00537
00538 #define GS_OVL_FUNCTION 4
00539 #define GS_OVL_CHAIN GS_TREE_CHAIN
00540 #define GS_OVL_CURRENT 5
00541 #define GS_OVL_NEXT 6
00542
00543 #ifdef FE_GNU_4_2_0
00544
00545 #define GS_OMP_CLAUSE_CODE 4
00546
00547 #define GS_OMP_CLAUSE_DECL 5
00548 #define GS_OMP_CLAUSE_DEFAULT_KIND GS_OMP_CLAUSE_DECL
00549 #define GS_OMP_CLAUSE_IF_EXPR GS_OMP_CLAUSE_DECL
00550 #define GS_OMP_CLAUSE_NUM_THREADS_EXPR GS_OMP_CLAUSE_DECL
00551 #define GS_OMP_CLAUSE_REDUCTION_CODE 6
00552
00553 #define GS_OMP_CLAUSE_SCHEDULE_KIND 5
00554 #define GS_OMP_CLAUSE_SCHEDULE_CHUNK_EXPR 6
00555 #endif
00556
00557
00558
00559 extern gs_tree_code_class_t gs_tree_code_class (gs_t t);
00560
00561 #define GS_LOOKUP(name, arg) \
00562 static inline gs_t name (gs_t t) { \
00563 GS_ASSERT (t != (gs_t) NULL, \
00564 "Got null node"); \
00565 return gs_operand (t, arg); \
00566 }
00567
00568 #define GS_LOOKUP_FLAG(operand, name, flag) \
00569 static inline gs_bool_t name (gs_t t) { \
00570 GS_ASSERT (t != (gs_t) NULL, "Got null node"); \
00571 return gs_bv (gs_operand (t, operand), flag); \
00572 }
00573
00574 #define GS_UPDATE_FLAG(operand, name, flag) \
00575 static inline void name (gs_t t, gs_bool_t val) { \
00576 GS_ASSERT (t != (gs_t) NULL, "Got null node"); \
00577 _gs_bv (gs_operand (t, operand), flag, val); \
00578 }
00579
00580 GS_LOOKUP (gs_cc1_command_line_args, GS_CC1_COMMAND_LINE_ARGS)
00581 GS_LOOKUP (gs_global_trees_list, GS_GLOBAL_TREES_LIST)
00582 GS_LOOKUP (gs_integer_types_list, GS_INTEGER_TYPES_LIST)
00583 GS_LOOKUP (gs_program_declarations, GS_PROGRAM_DECLARATIONS)
00584 GS_LOOKUP (gs_gxx_emitted_decls, GS_GXX_EMITTED_DECLS)
00585 GS_LOOKUP (gs_gxx_emitted_asms, GS_GXX_EMITTED_ASMS)
00586 GS_LOOKUP (gs_weak_decls, GS_WEAK_DECLS)
00587
00588 GS_LOOKUP_FLAG (GS_PROGRAM_FLAGS, gs_flag_errno_math, GS_FLAG_ERRNO_MATH)
00589 GS_LOOKUP_FLAG (GS_PROGRAM_FLAGS, gs_pragma_implementation, GS_PRAGMA_IMPLEMENTATION)
00590 GS_LOOKUP_FLAG (GS_PROGRAM_FLAGS, gs_pragma_interface, GS_PRAGMA_INTERFACE)
00591
00592 GS_LOOKUP (gs_tree_type, GS_TREE_TYPE)
00593
00594
00595
00596 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_side_effects, GS_TREE_SIDE_EFFECTS)
00597
00598 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_readonly, GS_TYPE_READONLY)
00599 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_readonly, GS_TREE_READONLY)
00600
00601 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_constant, GS_TREE_CONSTANT)
00602 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_sizes_gimplified, GS_TYPE_SIZES_GIMPLIFIED)
00603
00604 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_invariant, GS_TREE_INVARIANT)
00605 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_addressable, GS_TREE_ADDRESSABLE)
00606 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_this_volatile, GS_TREE_THIS_VOLATILE)
00607 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_asm_written, GS_TREE_ASM_WRITTEN)
00608 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_used, GS_TREE_USED)
00609 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_nothrow, GS_TREE_NOTHROW)
00610 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_public, GS_TREE_PUBLIC)
00611 GS_LOOKUP_FLAG (GS_FLAGS, gs_asm_volatile_p, GS_ASM_VOLATILE_P)
00612 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_private, GS_TREE_PRIVATE)
00613 #ifdef FE_GNU_4_2_0
00614 GS_LOOKUP_FLAG (GS_FLAGS, gs_omp_parallel_combined, GS_TREE_PRIVATE)
00615 #endif
00616 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_protected, GS_TREE_PROTECTED)
00617 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_static, GS_TREE_STATIC)
00618 GS_LOOKUP_FLAG (GS_FLAGS, gs_dwarf_access_flag_0, GS_DWARF_ACCESS_FLAG_0);
00619 GS_LOOKUP_FLAG (GS_FLAGS, gs_dwarf_access_flag_1, GS_DWARF_ACCESS_FLAG_1);
00620 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_lang_flag_0, GS_TREE_LANG_FLAG_0)
00621 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_lang_flag_1, GS_TREE_LANG_FLAG_1)
00622 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_lang_flag_2, GS_TREE_LANG_FLAG_2)
00623 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_lang_flag_3, GS_TREE_LANG_FLAG_3)
00624 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_lang_flag_4, GS_TREE_LANG_FLAG_4)
00625 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_lang_flag_5, GS_TREE_LANG_FLAG_5)
00626 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_lang_flag_6, GS_TREE_LANG_FLAG_6)
00627 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_not_emitted_by_gxx,GS_TREE_NOT_EMITTED_BY_GXX)
00628 GS_UPDATE_FLAG (GS_FLAGS, gs_set_tree_not_emitted_by_gxx, GS_TREE_NOT_EMITTED_BY_GXX)
00629
00630
00631 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_unsigned, GS_DECL_UNSIGNED)
00632 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_ignored_p, GS_DECL_IGNORED_P)
00633 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_abstract, GS_DECL_ABSTRACT)
00634 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_in_system_header, GS_DECL_IN_SYSTEM_HEADER)
00635 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_common, GS_DECL_COMMON)
00636 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_external, GS_DECL_EXTERNAL)
00637 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_weak, GS_DECL_WEAK)
00638 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_register, GS_DECL_REGISTER)
00639 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_nonlocal, GS_DECL_NONLOCAL)
00640 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_decl_suppress_debug, GS_TYPE_DECL_SUPPRESS_DEBUG)
00641 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_inline, GS_DECL_INLINE)
00642 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_declared_inline_p, GS_DECL_DECLARED_INLINE_P)
00643 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_built_in, GS_DECL_BUILT_IN)
00644 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_no_static_chain, GS_DECL_NO_STATIC_CHAIN)
00645 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_packed, GS_DECL_PACKED)
00646 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_bit_field, GS_DECL_BIT_FIELD)
00647 GS_UPDATE_FLAG (GS_FLAGS, gs_set_decl_bit_field, GS_DECL_BIT_FIELD)
00648 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_nonaddressable_p, GS_DECL_NONADDRESSABLE_P)
00649 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_emitted_by_gxx, GS_DECL_EMITTED_BY_GXX)
00650 GS_UPDATE_FLAG (GS_FLAGS, gs_set_decl_emitted_by_gxx, GS_DECL_EMITTED_BY_GXX)
00651 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_in_text_section, GS_DECL_IN_TEXT_SECTION)
00652 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_thread_local, GS_DECL_THREAD_LOCAL)
00653 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_transparent_union, GS_DECL_TRANSPARENT_UNION)
00654 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_virtual_p, GS_DECL_VIRTUAL_P)
00655 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_defer_output, GS_DECL_DEFER_OUTPUT)
00656 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_preserve_p, GS_DECL_PRESERVE_P)
00657 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_lang_flag_0, GS_DECL_LANG_FLAG_0)
00658 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_lang_flag_1, GS_DECL_LANG_FLAG_1)
00659 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_lang_flag_2, GS_DECL_LANG_FLAG_2)
00660 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_lang_flag_3, GS_DECL_LANG_FLAG_3)
00661 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_lang_flag_4, GS_DECL_LANG_FLAG_4)
00662 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_lang_flag_5, GS_DECL_LANG_FLAG_5)
00663 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_lang_flag_6, GS_DECL_LANG_FLAG_6)
00664 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_lang_flag_7, GS_DECL_LANG_FLAG_7)
00665 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_user_align, GS_DECL_USER_ALIGN)
00666 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_offset_align, GS_DECL_OFFSET_ALIGN)
00667 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_pointer_alias_set, GS_DECL_POINTER_ALIAS_SET)
00668 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_thunk_p, GS_DECL_THUNK_P)
00669 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_assembler_name_set_p, GS_DECL_ASSEMBLER_NAME_SET_P)
00670 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_artificial, GS_DECL_ARTIFICIAL)
00671 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_lang_specific, GS_DECL_LANG_SPECIFIC)
00672
00673 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_threadprivate, GS_DECL_THREADPRIVATE)
00674 GS_UPDATE_FLAG (GS_FLAGS, gs_set_decl_threadprivate, GS_DECL_THREADPRIVATE)
00675
00676
00677 #ifdef FE_GNU_4_2_0
00678 GS_LOOKUP_FLAG (GS_FLAGS, gs_c_decl_threadprivate_p, GS_C_DECL_THREADPRIVATE_P)
00679 GS_UPDATE_FLAG (GS_FLAGS, gs_set_c_decl_threadprivate_p, GS_C_DECL_THREADPRIVATE_P)
00680 #endif
00681
00682 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_needed, GS_DECL_NEEDED)
00683 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_reachable, GS_DECL_REACHABLE)
00684
00685
00686
00687 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_unsigned, GS_TYPE_UNSIGNED)
00688 GS_UPDATE_FLAG (GS_FLAGS, gs_set_type_unsigned, GS_TYPE_UNSIGNED)
00689
00690 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_no_force_blk, GS_TYPE_NO_FORCE_BLK)
00691 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_is_sizetype, GS_TYPE_IS_SIZETYPE)
00692 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_returns_stack_depressed, GS_TYPE_RETURNS_STACK_DEPRESSED)
00693
00694 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_string_flag, GS_TYPE_STRING_FLAG)
00695 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_needs_constructing, GS_TYPE_NEEDS_CONSTRUCTING)
00696
00697 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_transparent_union, GS_TYPE_TRANSPARENT_UNION)
00698 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_nonaliased_attribute, GS_TYPE_NONALIASED_COMPONENT)
00699
00700 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_packed, GS_TYPE_PACKED)
00701 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_restrict, GS_TYPE_RESTRICT)
00702 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_lang_flag_0, GS_TYPE_LANG_FLAG_0)
00703 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_lang_flag_1, GS_TYPE_LANG_FLAG_1)
00704 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_lang_flag_2, GS_TYPE_LANG_FLAG_2)
00705 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_lang_flag_3, GS_TYPE_LANG_FLAG_3)
00706 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_lang_flag_4, GS_TYPE_LANG_FLAG_4)
00707 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_lang_flag_5, GS_TYPE_LANG_FLAG_5)
00708 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_lang_flag_6, GS_TYPE_LANG_FLAG_6)
00709
00710 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_volatile, GS_TYPE_VOLATILE)
00711 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_lang_specific, GS_TYPE_LANG_SPECIFIC)
00712 GS_LOOKUP_FLAG (GS_FLAGS, gs_pointer_type_p, GS_POINTER_TYPE_P)
00713 GS_LOOKUP_FLAG (GS_FLAGS, gs_aggregate_value_p, GS_AGGREGATE_VALUE_P)
00714 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_big_endian, GS_TYPE_BIG_ENDIAN)
00715 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_little_endian, GS_TYPE_LITTLE_ENDIAN)
00716 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_explicit_endian, GS_TYPE_EXPLICIT_ENDIAN)
00717
00718 GS_LOOKUP_FLAG (GS_FLAGS, gs_type_ref_can_alias_all, GS_TREE_STATIC)
00719 GS_UPDATE_FLAG (GS_FLAGS, gs_set_type_ref_can_alias_all, GS_TREE_STATIC)
00720
00721
00722
00723
00724
00725
00726
00727
00728 GS_LOOKUP_FLAG (GS_FLAGS, gs_bit_field_ref_unsigned, GS_BIT_FIELD_REF_UNSIGNED)
00729 GS_LOOKUP_FLAG (GS_FLAGS, gs_expr_has_location, GS_EXPR_HAS_LOCATION)
00730 GS_LOOKUP_FLAG (GS_FLAGS, gs_emit_target_expr_cleanup, GS_EMIT_TARGET_EXPR_CLEANUP)
00731
00732
00733
00734
00735 static inline gs_bool_t gs_tree_has_location (gs_t t) {
00736 if (gs_tree_code_class(t) >= GS_TCC_REFERENCE &&
00737 gs_tree_code_class(t) <= GS_TCC_EXPRESSION)
00738 return gs_expr_has_location (t);
00739 else
00740 return gs_false;
00741 }
00742
00743
00744
00745 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_constant_overflow, GS_TREE_CONSTANT_OVERFLOW)
00746 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_overflow, GS_TREE_OVERFLOW)
00747
00748 GS_LOOKUP_FLAG (GS_FLAGS, gs_real_value_isinf, GS_REAL_VALUE_ISINF)
00749 GS_LOOKUP_FLAG (GS_FLAGS, gs_real_value_isnan, GS_REAL_VALUE_ISNAN)
00750
00751 GS_LOOKUP_FLAG (GS_FLAGS, gs_tree_symbol_referenced, GS_TREE_SYMBOL_REFERENCED)
00752 GS_UPDATE_FLAG (GS_FLAGS, gs_set_tree_symbol_referenced, GS_TREE_SYMBOL_REFERENCED)
00753
00754
00755 GS_LOOKUP (gs_decl_name, GS_DECL_NAME)
00756 static inline gs_int_t gs_label_decl_uid (gs_t t) {
00757 return gs_n (gs_operand (t, GS_LABEL_DECL_UID));
00758 }
00759 static inline gs_int_t gs_decl_uid (gs_t t) {
00760 return gs_n (gs_operand (t, GS_DECL_UID));
00761 }
00762 GS_LOOKUP (gs_decl_size, GS_DECL_SIZE)
00763 GS_LOOKUP (gs_decl_size_unit, GS_DECL_SIZE_UNIT)
00764 static inline unsigned int gs_decl_built_in_class (gs_t t) {
00765 return gs_b(gs_operand (t, GS_DECL_BUILT_IN_CLASS));
00766 }
00767 static inline unsigned int gs_decl_function_code (gs_t t) {
00768 return gs_hword(gs_operand (t, GS_DECL_FUNCTION_CODE));
00769 }
00770 GS_LOOKUP (gs_decl_field_offset, GS_DECL_FIELD_OFFSET)
00771 GS_LOOKUP (gs_decl_field_bit_offset, GS_DECL_FIELD_BIT_OFFSET)
00772 GS_LOOKUP (gs_decl_context, GS_DECL_CONTEXT)
00773 GS_LOOKUP (gs_decl_attributes, GS_DECL_ATTRIBUTES)
00774 GS_LOOKUP (gs_decl_abstract_origin, GS_DECL_ABSTRACT_ORIGIN)
00775 GS_LOOKUP (gs_decl_arguments, GS_DECL_ARGUMENTS)
00776 GS_LOOKUP (gs_decl_anon_union_elems, GS_DECL_ANON_UNION_ELEMS)
00777 GS_LOOKUP (gs_decl_initial, GS_DECL_INITIAL)
00778 static inline void gs_set_decl_initial(gs_t t, gs_t val) {
00779 gs_set_operand(t, GS_DECL_INITIAL, val);
00780 }
00781 GS_LOOKUP (gs_decl_saved_tree, GS_DECL_SAVED_TREE)
00782 GS_LOOKUP (gs_decl_value_expr, GS_DECL_VALUE_EXPR)
00783 GS_LOOKUP (gs_decl_result, GS_DECL_RESULT)
00784 GS_LOOKUP (gs_decl_original_type, GS_DECL_ORIGINAL_TYPE)
00785 GS_LOOKUP (gs_decl_arg_type, GS_DECL_ARG_TYPE)
00786 GS_LOOKUP (gs_decl_arg_type_as_written, GS_DECL_ARG_TYPE_AS_WRITTEN)
00787 GS_LOOKUP (gs_tree_chain, GS_TREE_CHAIN)
00788 GS_LOOKUP (gs_type_name, GS_TYPE_NAME)
00789 static inline gs_string_t gs_decl_mode (gs_t t) {
00790 return gs_s (gs_operand (t, GS_DECL_MODE));
00791 }
00792 static inline gs_string_t gs_decl_source_file (gs_t t) {
00793 return gs_s (gs_operand (t, GS_DECL_SOURCE_FILE));
00794 }
00795 static inline gs_int_t gs_decl_source_line (gs_t t) {
00796 return gs_n (gs_operand (t, GS_DECL_SOURCE_LINE));
00797 }
00798 GS_LOOKUP (gs_type_size, GS_TYPE_SIZE)
00799 GS_LOOKUP (gs_type_size_unit, GS_TYPE_SIZE_UNIT)
00800 GS_LOOKUP (gs_type_user_align, GS_TYPE_USER_ALIGN)
00801 static inline gs_string_t gs_type_mode (gs_t t) {
00802 return gs_s (gs_operand (t, GS_TYPE_MODE));
00803 }
00804 static inline gs_int_t gs_type_align (gs_t t) {
00805 return gs_n (gs_operand (t, GS_TYPE_ALIGN));
00806 }
00807 GS_LOOKUP (gs_type_alias_set, GS_TYPE_ALIAS_SET)
00808 GS_LOOKUP (gs_type_attributes, GS_TYPE_ATTRIBUTES)
00809 GS_LOOKUP (gs_type_precision, GS_TYPE_PRECISION)
00810 static inline gs_int_t gs_type_type_precision (gs_t t) {
00811 return gs_n (gs_operand (t, GS_TYPE_PRECISION));
00812 }
00813 GS_LOOKUP (gs_type_min_value, GS_TYPE_MIN_VALUE)
00814 GS_LOOKUP (gs_type_max_value, GS_TYPE_MAX_VALUE)
00815
00816 GS_LOOKUP (gs_type_values, GS_TYPE_VALUES)
00817 GS_LOOKUP (gs_type_domain, GS_TYPE_DOMAIN)
00818 static inline gs_int_t gs_type_vector_subparts (gs_t t) {
00819 return gs_n (gs_operand (t, GS_TYPE_VECTOR_SUBPARTS));
00820 }
00821 GS_LOOKUP (gs_type_fields, GS_TYPE_FIELDS)
00822 GS_LOOKUP (gs_type_debug_representation_type, GS_TYPE_DEBUG_REPRESENTATION_TYPE)
00823 GS_LOOKUP (gs_type_method_basetype, GS_TYPE_METHOD_BASETYPE)
00824 GS_LOOKUP (gs_type_arg_types, GS_TYPE_ARG_TYPES)
00825 GS_LOOKUP (gs_type_offset_basetype, GS_TYPE_OFFSET_BASETYPE)
00826 GS_LOOKUP (gs_type_context, GS_TYPE_CONTEXT)
00827 GS_LOOKUP (gs_type_pointer_to, GS_TYPE_POINTER_TO)
00828 GS_LOOKUP (gs_type_reference_to, GS_TYPE_REFERENCE_TO)
00829 GS_LOOKUP (gs_type_next_ptr_to, GS_TYPE_NEXT_PTR_TO)
00830 static inline void gs_set_type_next_ptr_to(gs_t t, gs_t val) {
00831 gs_set_operand(t, GS_TYPE_NEXT_PTR_TO, val);
00832 }
00833 static inline gs_int_t gs_tree_code_length (gs_t t) {
00834 return gs_n (gs_operand (t, GS_ARITY));
00835 }
00836 static inline gs_t gs_tree_operand (gs_t t, gs_count_t index) {
00837 return gs_operand (t, GS_TREE_OPERAND_ZERO + index);
00838 }
00839 GS_LOOKUP (gs_bind_expr_vars, GS_BIND_EXPR_VARS)
00840 GS_LOOKUP (gs_bind_expr_body, GS_BIND_EXPR_BODY)
00841 GS_LOOKUP (gs_bind_expr_block, GS_BIND_EXPR_BLOCK)
00842
00843 GS_LOOKUP (gs_case_low, GS_CASE_LOW)
00844 GS_LOOKUP (gs_case_high, GS_CASE_HIGH)
00845 GS_LOOKUP (gs_case_label, GS_CASE_LABEL)
00846
00847 #ifdef FE_GNU_4_2_0
00848 static inline gs_int_t gs_constructor_length (gs_t t) {
00849 return gs_n (gs_operand (t, GS_CONSTRUCTOR_LENGTH));
00850 }
00851 static inline gs_t gs_constructor_elts_index (gs_t t, gs_count_t index) {
00852 return gs_index (gs_operand (t, GS_CONSTRUCTOR_ELTS_INDEX), index);
00853 }
00854 static inline gs_t gs_constructor_elts_value (gs_t t, gs_count_t index) {
00855 return gs_index (gs_operand (t, GS_CONSTRUCTOR_ELTS_VALUE), index);
00856 }
00857 static inline void gs_constructor_elts_set_value (gs_t t, gs_count_t index,
00858 gs_t value) {
00859 gs_t list = gs_operand (t, GS_CONSTRUCTOR_ELTS_VALUE);
00860 gs_set_index (list, index, value);
00861 }
00862 #else
00863 GS_LOOKUP (gs_constructor_elts, GS_CONSTRUCTOR_ELTS)
00864 #endif
00865 GS_LOOKUP (gs_decl_expr_decl, GS_DECL_EXPR_DECL)
00866
00867 static inline gs_string_t gs_expr_filename (gs_t t) {
00868 if (gs_operand (t, GS_EXPR_FILENAME) != NULL)
00869 return gs_s (gs_operand (t, GS_EXPR_FILENAME));
00870 else
00871 return NULL;
00872 }
00873
00874 static inline gs_int_t gs_expr_lineno (gs_t t) {
00875 if (gs_operand (t, GS_EXPR_LINENO))
00876 return gs_n (gs_operand (t, GS_EXPR_LINENO));
00877 else return -1;
00878 }
00879
00880 static inline gs_string_t gs_identifier_pointer (gs_t t) {
00881 return gs_s (gs_operand (t, GS_IDENTIFIER_POINTER));
00882 }
00883 GS_LOOKUP (gs_tree_int_cst_low, GS_TREE_INT_CST_LOW)
00884 GS_LOOKUP (gs_tree_int_cst_high, GS_TREE_INT_CST_HIGH)
00885 static inline gs_long_long_t gs_get_integer_value (gs_t t)
00886 {
00887 GS_ASSERT (t != (gs_t) NULL, (gs_string_t) "Got null node");
00888 return (gs_long_long_t) gs_ull (gs_tree_int_cst_low (t));
00889 }
00890
00891 static inline gs_float_t gs_tree_real_cst_f (gs_t t) {
00892 return gs_f (gs_operand (t, GS_TREE_REAL_CST_F));
00893 }
00894 static inline gs_double_t gs_tree_real_cst_d (gs_t t) {
00895 return gs_d (gs_operand (t, GS_TREE_REAL_CST_D));
00896 }
00897 static inline gs_long_double_t gs_tree_real_cst_ld (gs_t t) {
00898 return gs_ld (gs_operand (t, GS_TREE_REAL_CST_LD));
00899 }
00900 GS_LOOKUP (gs_tree_vector_cst_elts, GS_TREE_VECTOR_CST_ELTS)
00901 GS_LOOKUP (gs_tree_realpart, GS_TREE_REALPART)
00902 GS_LOOKUP (gs_tree_imagpart, GS_TREE_IMAGPART)
00903 GS_LOOKUP (gs_expanded_ptrmem_cst, GS_EXPANDED_PTRMEM_CST)
00904 static inline gs_string_t gs_tree_string_pointer (gs_t t) {
00905 return gs_s (gs_operand (t, GS_TREE_STRING_POINTER));
00906 }
00907 static inline gs_int_t gs_tree_string_length (gs_t t) {
00908 return gs_n (gs_operand (t, GS_TREE_STRING_LENGTH));
00909 }
00910 GS_LOOKUP (gs_tree_purpose, GS_TREE_PURPOSE)
00911 GS_LOOKUP (gs_tree_value, GS_TREE_VALUE)
00912 static inline void gs_set_tree_value(gs_t t, gs_t val) {
00913 gs_set_operand(t, GS_TREE_VALUE, val);
00914 }
00915 static inline gs_int_t gs_tree_vec_length (gs_t t) {
00916 return gs_n (gs_operand (t, GS_TREE_VEC_LENGTH));
00917 }
00918 static inline gs_t gs_tree_vec_elt (gs_t t, gs_count_t index) {
00919 return gs_index (gs_operand (t, GS_TREE_VEC_ELT), index);
00920 }
00921 GS_LOOKUP (gs_block_vars, GS_BLOCK_VARS)
00922 GS_LOOKUP (gs_block_supercontext, GS_BLOCK_SUPERCONTEXT)
00923 GS_LOOKUP (gs_block_subblocks, GS_BLOCK_SUBBLOCKS)
00924 GS_LOOKUP (gs_block_chain, GS_BLOCK_CHAIN)
00925 GS_LOOKUP (gs_block_abstract_origin, GS_BLOCK_ABSTRACT_ORIGIN)
00926 GS_LOOKUP (gs_statement_list_elts, GS_STATEMENT_LIST_ELTS)
00927
00928 static inline gs_int_t gs_decl_align_unit (gs_t t) {
00929 return gs_n (gs_operand (t, GS_DECL_ALIGN_UNIT));
00930 }
00931 GS_LOOKUP (gs_decl_assembler_name, GS_DECL_ASSEMBLER_NAME)
00932 GS_LOOKUP (gs_decl_alias_target, GS_DECL_ALIAS_TARGET)
00933 static inline void gs_set_decl_alias_target(gs_t t, gs_t val) {
00934 gs_set_operand(t, GS_DECL_ALIAS_TARGET, val);
00935 }
00936 static inline gs_int_t gs_decl_asmreg (gs_t t) {
00937 gs_t asmreg = gs_operand (t, GS_DECL_ASMREG);
00938 return (asmreg != (gs_t) NULL) ? gs_n(asmreg) : -1;
00939 }
00940
00941 extern gs_string_t gs_flag_name (gs_code_t constructor, gs_int_t attribute, gs_count_t flag, gs_tree_code_class_t tree_code_class);
00942 extern gs_string_t gs_attribute_name (gs_int_t attribute, gs_tree_code_class_t tcc_class, gs_code_t constructor, gs_int_t * omit);
00943
00944 static inline gs_t gs_error_mark_node(void) {
00945 gs_t t = gs_index(gs_global_trees_list(gs_program), GS_TI_ERROR_MARK);
00946 GS_ASSERT(t != NULL, "gs_error_mark_node: got NULL node");
00947 return t;
00948 }
00949 static inline gs_t gs_void_type_node(void) {
00950 gs_t t = gs_index(gs_global_trees_list(gs_program), GS_TI_VOID_TYPE);
00951 GS_ASSERT(t != NULL, "gs_void_type_node: got NULL node");
00952 return t;
00953 }
00954 static inline gs_t gs_ptr_type_node(void) {
00955 gs_t t = gs_index(gs_global_trees_list(gs_program), GS_TI_PTR_TYPE);
00956 GS_ASSERT(t != NULL, "gs_ptr_type_node: got NULL node");
00957 return t;
00958 }
00959 static inline gs_t gs_boolean_type_node(void) {
00960 gs_t t = gs_index(gs_global_trees_list(gs_program), GS_TI_BOOLEAN_TYPE);
00961 GS_ASSERT(t != NULL, "gs_boolean_type_node: got NULL node");
00962 return t;
00963 }
00964 static inline gs_t gs_ptrdiff_type_node(void) {
00965 gs_t t = gs_index(gs_global_trees_list(gs_program), GS_TI_PTRDIFF_TYPE);
00966 GS_ASSERT(t != NULL, "gs_ptrdiff_type_node: got NULL node");
00967 return t;
00968 }
00969 #ifdef FE_GNU_4_2_0
00970 static inline gs_t gs_void_list_node(void) {
00971 gs_t t = gs_index(gs_global_trees_list(gs_program), GS_TI_VOID_LIST_NODE);
00972 GS_ASSERT(t != NULL, "gs_void_type_node: got NULL node");
00973 return t;
00974 }
00975 #endif
00976 static inline gs_t gs_integer_type_node(void) {
00977 gs_t t = gs_index (gs_integer_types_list(gs_program), GS_ITK_INT);
00978 GS_ASSERT(t != NULL, "gs_integer_type_node: got NULL node");
00979 return t;
00980 }
00981
00982
00983 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_comdat, GS_DECL_COMDAT)
00984 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_global_ctor_p, GS_DECL_GLOBAL_CTOR_P)
00985 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_global_dtor_p, GS_DECL_GLOBAL_DTOR_P)
00986 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_one_only, GS_DECL_ONE_ONLY)
00987 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_maybe_in_charge_constructor_p, GS_DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P)
00988 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_maybe_in_charge_destructor_p, GS_DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P)
00989 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_function_member_p, GS_DECL_FUNCTION_MEMBER_P)
00990
00991 static inline gs_bool_t gs_uses_template_parms (gs_t t) {
00992 GS_ASSERT (t != (gs_t) NULL, "Got null node");
00993 if (gs_tree_code (t) == GS_FUNCTION_DECL)
00994 return gs_bv (gs_operand (t, GS_CP_DECL_FLAGS),
00995 GS_DECL_USES_TEMPLATE_PARMS);
00996 else if (gs_tree_code (t) == GS_RECORD_TYPE)
00997 return gs_bv (gs_operand (t, GS_CP_TYPE_FLAGS),
00998 GS_TYPE_USES_TEMPLATE_PARMS);
00999 GS_ASSERT(gs_false, "gs_uses_template_parms: Incorrect node");
01000 return gs_false;
01001 }
01002
01003 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_copy_constructor_p, GS_DECL_COPY_CONSTRUCTOR_P)
01004 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_implicit_instantiation, GS_DECL_IMPLICIT_INSTANTIATION)
01005 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_namespace_scope_p, GS_DECL_NAMESPACE_SCOPE_P)
01006 #ifdef FE_GNU_4_2_0
01007 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_cp_decl_threadprivate_p, GS_CP_DECL_THREADPRIVATE_P)
01008 #endif
01009 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_complete_constructor_p, GS_DECL_COMPLETE_CONSTRUCTOR_P)
01010 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_really_extern, GS_DECL_REALLY_EXTERN)
01011 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_use_template, GS_DECL_USE_TEMPLATE)
01012 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_template_instantiated,
01013 GS_DECL_TEMPLATE_INSTANTIATED)
01014 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_template_specialization,
01015 GS_DECL_TEMPLATE_SPECIALIZATION)
01016 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_pure_virtual_p,
01017 GS_DECL_PURE_VIRTUAL_P)
01018 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_this_thunk_p,
01019 GS_DECL_THIS_THUNK_P)
01020 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_extern_c_p,
01021 GS_DECL_EXTERN_C_P)
01022 #ifdef FE_GNU_4_2_0
01023 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_constructor_p,
01024 GS_DECL_CONSTRUCTOR_P)
01025 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_complete_destructor_p,
01026 GS_DECL_COMPLETE_DESTRUCTOR_P)
01027 static inline gs_bool_t gs_decl_nonstatic_member_function_p (gs_t t) {
01028 GS_ASSERT (t != (gs_t) NULL, "Got null node");
01029 return (gs_tree_code (gs_tree_type (t)) == GS_METHOD_TYPE);
01030 }
01031 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_has_in_charge_parm_p,
01032 GS_DECL_HAS_IN_CHARGE_PARM_P)
01033 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_has_vtt_parm_p,
01034 GS_DECL_HAS_VTT_PARM_P)
01035 GS_LOOKUP_FLAG (GS_CP_DECL_FLAGS, gs_decl_assignment_operator_p,
01036 GS_DECL_ASSIGNMENT_OPERATOR_P)
01037 #endif
01038
01039
01040 GS_LOOKUP (gs_decl_template_info, GS_DECL_TEMPLATE_INFO)
01041 GS_LOOKUP (gs_decl_section_name, GS_DECL_SECTION_NAME)
01042 GS_LOOKUP (gs_cp_namespace_decls, GS_CP_NAMESPACE_DECLS)
01043 GS_LOOKUP (gs_cp_decl_context, GS_CP_DECL_CONTEXT)
01044 GS_LOOKUP (gs_decl_vindex, GS_DECL_VINDEX)
01045 GS_LOOKUP (gs_most_general_template, GS_MOST_GENERAL_TEMPLATE)
01046 GS_LOOKUP (gs_decl_namespace_alias, GS_DECL_NAMESPACE_ALIAS)
01047 GS_LOOKUP (gs_thunk_target, GS_THUNK_TARGET)
01048 GS_LOOKUP (gs_decl_ti_template, GS_DECL_TI_TEMPLATE)
01049 GS_LOOKUP (gs_decl_template_instantiations, GS_DECL_VINDEX)
01050 static inline gs_long_t gs_thunk_fixed_offset (gs_t t) {
01051 return gs_n (gs_operand (t, GS_THUNK_FIXED_OFFSET));
01052 }
01053 GS_LOOKUP (gs_thunk_virtual_offset, GS_THUNK_VIRTUAL_OFFSET)
01054 GS_LOOKUP (gs_decl_named_return_object, GS_DECL_NAMED_RETURN_OBJECT)
01055
01056
01057 GS_LOOKUP_FLAG (GS_CP_TYPE_FLAGS, gs_type_ptrmemfunc_p, GS_TYPE_PTRMEMFUNC_P)
01058 GS_LOOKUP_FLAG (GS_CP_TYPE_FLAGS, gs_type_ptrmem_p, GS_TYPE_PTRMEM_P)
01059 GS_LOOKUP_FLAG (GS_CP_TYPE_FLAGS, gs_classtype_interface_only, GS_CLASSTYPE_INTERFACE_ONLY)
01060 GS_LOOKUP_FLAG (GS_CP_TYPE_FLAGS, gs_is_empty_class, GS_IS_EMPTY_CLASS)
01061 GS_LOOKUP_FLAG (GS_CP_TYPE_FLAGS, gs_class_type_p, GS_CLASS_TYPE_P)
01062 GS_LOOKUP_FLAG (GS_CP_TYPE_FLAGS, gs_anon_union_type_p, GS_ANON_UNION_TYPE_P)
01063 GS_LOOKUP_FLAG (GS_CP_TYPE_FLAGS, gs_classtype_template_specialization,
01064 GS_CLASSTYPE_TEMPLATE_SPECIALIZATION)
01065 #ifdef FE_GNU_4_2_0
01066 GS_LOOKUP_FLAG (GS_CP_TYPE_FLAGS, gs_classtype_non_pod_p,
01067 GS_CLASSTYPE_NON_POD_P)
01068 GS_LOOKUP_FLAG (GS_CP_TYPE_FLAGS, gs_type_has_default_constructor,
01069 GS_TYPE_HAS_DEFAULT_CONSTRUCTOR)
01070 GS_LOOKUP_FLAG (GS_CP_TYPE_FLAGS, gs_type_has_implicit_copy_constructor,
01071 GS_TYPE_HAS_IMPLICIT_COPY_CONSTRUCTOR)
01072 #endif
01073
01074
01075 GS_LOOKUP (gs_type_binfo, GS_TYPE_BINFO)
01076 GS_LOOKUP (gs_binfo_type, GS_BINFO_TYPE)
01077 GS_LOOKUP (gs_binfo_base_binfos, GS_BINFO_BASE_BINFOS)
01078 GS_LOOKUP (gs_binfo_vptr_field, GS_BINFO_VPTR_FIELD)
01079 GS_LOOKUP_FLAG (GS_FLAGS, gs_binfo_virtual_p, GS_BINFO_VIRTUAL_P)
01080
01081 GS_LOOKUP (gs_decl_template_specializations, GS_DECL_SIZE)
01082 static inline void gs_set_decl_template_specializations(gs_t t, gs_t val) {
01083 gs_set_operand(t, GS_DECL_SIZE, val);
01084 }
01085
01086 GS_LOOKUP (gs_asm_string, GS_ASM_STRING)
01087 GS_LOOKUP (gs_asm_outputs, GS_ASM_OUTPUTS)
01088 GS_LOOKUP (gs_asm_inputs, GS_ASM_INPUTS)
01089 GS_LOOKUP (gs_asm_clobbers, GS_ASM_CLOBBERS)
01090
01091 GS_LOOKUP (gs_do_cond, GS_DO_COND)
01092 GS_LOOKUP (gs_do_body, GS_DO_BODY)
01093
01094 GS_LOOKUP (gs_expr_stmt_expr, GS_EXPR_STMT_EXPR)
01095
01096 GS_LOOKUP (gs_eh_spec_stmts, GS_EH_SPEC_STMTS)
01097 GS_LOOKUP (gs_eh_spec_raises, GS_EH_SPEC_RAISES)
01098
01099 GS_LOOKUP (gs_for_init_stmt, GS_FOR_INIT_STMT)
01100 GS_LOOKUP (gs_for_cond, GS_FOR_COND)
01101 GS_LOOKUP (gs_for_expr, GS_FOR_EXPR)
01102 GS_LOOKUP (gs_for_body, GS_FOR_BODY)
01103
01104 GS_LOOKUP (gs_if_cond, GS_IF_COND)
01105 GS_LOOKUP (gs_then_clause, GS_THEN_CLAUSE)
01106 GS_LOOKUP (gs_else_clause, GS_ELSE_CLAUSE)
01107
01108 GS_LOOKUP (gs_label_expr_label, GS_LABEL_EXPR_LABEL)
01109
01110 GS_LOOKUP (gs_loop_expr_body, GS_LOOP_EXPR_BODY)
01111
01112 GS_LOOKUP (gs_stmt_expr_stmt, GS_STMT_EXPR_STMT)
01113
01114 GS_LOOKUP (gs_try_stmts, GS_TRY_STMTS)
01115 GS_LOOKUP (gs_try_handlers, GS_TRY_HANDLERS)
01116
01117 GS_LOOKUP (gs_while_cond, GS_WHILE_COND)
01118 GS_LOOKUP (gs_while_body, GS_WHILE_BODY)
01119
01120 GS_LOOKUP (gs_obj_type_ref_expr, GS_OBJ_TYPE_REF_EXPR)
01121 GS_LOOKUP (gs_obj_type_ref_object, GS_OBJ_TYPE_REF_OBJECT)
01122 GS_LOOKUP (gs_obj_type_ref_token, GS_OBJ_TYPE_REF_TOKEN)
01123
01124 #ifdef FE_GNU_4_2_0
01125 GS_LOOKUP (gs_omp_parallel_body, GS_OMP_PARALLEL_BODY)
01126 GS_LOOKUP (gs_omp_parallel_clauses, GS_OMP_PARALLEL_CLAUSES)
01127 GS_LOOKUP (gs_omp_critical_body, GS_OMP_CRITICAL_BODY)
01128 GS_LOOKUP (gs_omp_critical_name, GS_OMP_CRITICAL_NAME)
01129 GS_LOOKUP (gs_omp_sections_body, GS_OMP_SECTIONS_BODY)
01130 GS_LOOKUP (gs_omp_sections_clauses, GS_OMP_SECTIONS_CLAUSES)
01131 GS_LOOKUP (gs_omp_section_body, GS_OMP_SECTION_BODY)
01132 GS_LOOKUP (gs_omp_single_body, GS_OMP_SINGLE_BODY)
01133 GS_LOOKUP (gs_omp_single_clauses, GS_OMP_SINGLE_CLAUSES)
01134 GS_LOOKUP (gs_omp_for_body, GS_OMP_FOR_BODY)
01135 GS_LOOKUP (gs_omp_for_clauses, GS_OMP_FOR_CLAUSES)
01136 GS_LOOKUP (gs_omp_for_init, GS_OMP_FOR_INIT)
01137 GS_LOOKUP (gs_omp_for_cond, GS_OMP_FOR_COND)
01138 GS_LOOKUP (gs_omp_for_incr, GS_OMP_FOR_INCR)
01139 GS_LOOKUP (gs_omp_master_body, GS_OMP_MASTER_BODY)
01140 GS_LOOKUP (gs_omp_ordered_body, GS_OMP_ORDERED_BODY)
01141 #endif
01142
01143
01144 GS_LOOKUP_FLAG (GS_CP_EXPR_FLAGS, gs_stmt_is_full_expr_p, GS_STMT_IS_FULL_EXPR_P)
01145 GS_LOOKUP_FLAG (GS_CP_EXPR_FLAGS, gs_aggr_init_via_ctor_p, GS_AGGR_INIT_VIA_CTOR_P)
01146 GS_LOOKUP_FLAG (GS_CP_EXPR_FLAGS, gs_cleanup_eh_only, GS_CLEANUP_EH_ONLY)
01147
01148
01149 GS_LOOKUP (gs_type_main_variant, GS_TYPE_MAIN_VARIANT)
01150 GS_LOOKUP (gs_type_vfield, GS_TYPE_VFIELD)
01151 GS_LOOKUP (gs_type_methods, GS_TYPE_METHODS)
01152 GS_LOOKUP (gs_classtype_as_base, GS_CLASSTYPE_AS_BASE)
01153 GS_LOOKUP (gs_classtype_typeinfo_var, GS_CLASSTYPE_TYPEINFO_VAR)
01154 GS_LOOKUP (gs_typeinfo_decl, GS_TYPEINFO_DECL)
01155 GS_LOOKUP (gs_classtype_copy_constructor, GS_CLASSTYPE_COPY_CONSTRUCTOR)
01156
01157 static inline void gs_set_tree_operand (gs_t node, int i, gs_t opnd)
01158 {
01159 gs_set_operand(node, GS_TREE_OPERAND_ZERO + i, opnd);
01160 }
01161
01162 GS_LOOKUP (gs_template_parm_idx, GS_TEMPLATE_PARM_IDX)
01163 GS_LOOKUP (gs_template_parm_level, GS_TEMPLATE_PARM_LEVEL)
01164 GS_LOOKUP (gs_template_parm_descendants, GS_TEMPLATE_PARM_DESCENDANTS)
01165 GS_LOOKUP (gs_template_parm_orig_level, GS_TEMPLATE_PARM_ORIG_LEVEL)
01166 GS_LOOKUP (gs_template_parm_decl, GS_TEMPLATE_PARM_DECL)
01167
01168 GS_LOOKUP (gs_baselink_binfo, GS_BASELINK_BINFO)
01169 GS_LOOKUP (gs_baselink_functions, GS_BASELINK_FUNCTIONS)
01170 GS_LOOKUP (gs_baselink_access_binfo, GS_BASELINK_ACCESS_BINFO)
01171 GS_LOOKUP (gs_baselink_optype, GS_BASELINK_OPTYPE)
01172
01173 GS_LOOKUP (gs_ovl_function, GS_OVL_FUNCTION)
01174 GS_LOOKUP (gs_ovl_chain, GS_OVL_CHAIN)
01175 GS_LOOKUP (gs_ovl_current, GS_OVL_CURRENT)
01176 GS_LOOKUP (gs_ovl_next, GS_OVL_NEXT)
01177 GS_LOOKUP_FLAG (GS_FLAGS, gs_ovl_used, GS_TREE_USED)
01178
01179 #ifdef FE_GNU_4_2_0
01180 static inline gs_omp_clause_code_t gs_omp_clause_code (gs_t t)
01181 {
01182 gs_t clause_code = gs_operand(t, GS_OMP_CLAUSE_CODE);
01183 return (clause_code != (gs_t) NULL) ?
01184 (gs_omp_clause_code_t) gs_n(clause_code) : GS_OMP_CLAUSE_ERROR;
01185 }
01186 GS_LOOKUP (gs_omp_clause_decl, GS_OMP_CLAUSE_DECL)
01187 GS_LOOKUP (gs_omp_clause_num_threads_expr, GS_OMP_CLAUSE_NUM_THREADS_EXPR)
01188 GS_LOOKUP (gs_omp_clause_if_expr, GS_OMP_CLAUSE_IF_EXPR)
01189 GS_LOOKUP (gs_omp_clause_chain, GS_TREE_CHAIN)
01190
01191 static inline gs_omp_clause_default_kind_t gs_omp_clause_default_kind (gs_t t)
01192 {
01193 gs_t default_kind = gs_operand(t, GS_OMP_CLAUSE_DEFAULT_KIND);
01194 return (default_kind != (gs_t) NULL) ?
01195 (gs_omp_clause_default_kind_t) gs_n(default_kind) :
01196 GS_OMP_CLAUSE_DEFAULT_UNSPECIFIED;
01197 }
01198
01199 static inline gs_code_t gs_omp_clause_reduction_code (gs_t t)
01200 {
01201 gs_t reduction_code = gs_operand(t, GS_OMP_CLAUSE_REDUCTION_CODE);
01202 return (reduction_code != (gs_t) NULL) ?
01203 (gs_code_t) gs_n(reduction_code): GS_ERROR_MARK;
01204 }
01205
01206 static inline gs_omp_clause_schedule_kind_t gs_omp_clause_schedule_kind (gs_t t)
01207 {
01208 gs_t schedule_kind = gs_operand(t, GS_OMP_CLAUSE_SCHEDULE_KIND);
01209 return (gs_omp_clause_schedule_kind_t) gs_n(schedule_kind);
01210 }
01211
01212 GS_LOOKUP (gs_omp_clause_schedule_chunk_expr, GS_OMP_CLAUSE_SCHEDULE_CHUNK_EXPR)
01213 #endif
01214
01215 static inline gs_t gs_classtype_size(gs_t t)
01216 {
01217 gs_t q;
01218 GS_ASSERT (t != (gs_t) NULL, "Got null node");
01219 q = gs_classtype_as_base (t);
01220 if (q)
01221 return gs_type_size (q);
01222 else
01223 return NULL;
01224 }
01225
01226 static inline void gs_set_decl_arg_type(gs_t t, gs_t val) {
01227 gs_set_operand(t, GS_DECL_ARG_TYPE, val);
01228 }
01229
01230 GS_LOOKUP_FLAG (GS_FLAGS, gs_cleanup_p, GS_TREE_LANG_FLAG_0)
01231 GS_LOOKUP (gs_handler_type, GS_TREE_TYPE)
01232 GS_LOOKUP (gs_handler_parms, GS_HANDLER_PARMS)
01233 GS_LOOKUP (gs_handler_body, GS_HANDLER_BODY)
01234
01235 GS_LOOKUP (gs_cleanup_body, GS_CLEANUP_BODY)
01236 GS_LOOKUP (gs_cleanup_expr, GS_CLEANUP_EXPR)
01237
01238 GS_LOOKUP (gs_catch_types, GS_CATCH_TYPES)
01239 GS_LOOKUP (gs_catch_body, GS_CATCH_BODY)
01240
01241 GS_LOOKUP_FLAG (GS_FLAGS, gs_identifier_opname_p, GS_TREE_LANG_FLAG_2)
01242 GS_LOOKUP_FLAG (GS_FLAGS, gs_identifier_typename_p, GS_TREE_LANG_FLAG_4)
01243 GS_LOOKUP_FLAG (GS_FLAGS, gs_decl_tinfo_p, GS_TREE_LANG_FLAG_4)
01244
01245 static inline gs_int_t gs_list_length (gs_t t)
01246 {
01247 gs_t p;
01248 gs_int_t length = 0;
01249 GS_ASSERT (t != (gs_t) NULL, "Got null node");
01250
01251 p = t;
01252 while (p) {
01253 p = gs_tree_chain (p);
01254 length++;
01255 }
01256 return length;
01257 }
01258
01259 GS_LOOKUP_FLAG (GS_FLAGS, gs_identifier_ctor_or_dtor_p, GS_TREE_LANG_FLAG_3)
01260
01261 static inline int gs_decl_friend_pseudo_template_instantiation(gs_t node)
01262 {
01263 return (gs_decl_template_info(node) && !gs_decl_use_template(node));
01264 }
01265
01266 static inline gs_t gs_tree_last(gs_t node)
01267 {
01268 if (node == NULL)
01269 return node;
01270
01271 while (gs_tree_chain(node) != NULL)
01272 node = gs_tree_chain(node);
01273 return node;
01274 }
01275
01276 static inline int gs_really_constant_p(gs_t exp)
01277 {
01278 gs_code_t code = gs_tree_code(exp);
01279
01280 while (code == GS_NOP_EXPR
01281 || code == GS_CONVERT_EXPR
01282 || code == GS_NON_LVALUE_EXPR) {
01283 exp = gs_tree_operand(exp, 0);
01284 code = gs_tree_code(exp);
01285 }
01286 return gs_tree_constant(exp);
01287 }
01288
01289 #ifdef FE_GNU_4_2_0
01290 static inline gs_t
01291 gs_skip_artificial_parms_for (gs_t fn, gs_t list)
01292 {
01293 if (gs_decl_nonstatic_member_function_p (fn))
01294 list = gs_tree_chain (list);
01295 else
01296 return list;
01297
01298 if (gs_decl_has_in_charge_parm_p (fn))
01299 list = gs_tree_chain (list);
01300 if (gs_decl_has_vtt_parm_p (fn))
01301 list = gs_tree_chain (list);
01302 return list;
01303 }
01304
01305 #define gs_function_first_user_parmtype(fn) \
01306 gs_skip_artificial_parms_for (fn, gs_type_arg_types (gs_tree_type (fn)))
01307 #endif
01308
01309 #endif // __GSPIN_TEL_H__