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