26 #define MARK_TS_BASE(C) \
28 tree_contains_struct[C][TS_BASE] = 1; \
31 #define MARK_TS_TYPED(C) \
34 tree_contains_struct[C][TS_TYPED] = 1; \
37 #define MARK_TS_COMMON(C) \
40 tree_contains_struct[C][TS_COMMON] = 1; \
43 #define MARK_TS_TYPE_COMMON(C) \
46 tree_contains_struct[C][TS_TYPE_COMMON] = 1; \
49 #define MARK_TS_TYPE_WITH_LANG_SPECIFIC(C) \
51 MARK_TS_TYPE_COMMON (C); \
52 tree_contains_struct[C][TS_TYPE_WITH_LANG_SPECIFIC] = 1; \
55 #define MARK_TS_DECL_MINIMAL(C) \
58 tree_contains_struct[C][TS_DECL_MINIMAL] = 1; \
61 #define MARK_TS_DECL_COMMON(C) \
63 MARK_TS_DECL_MINIMAL (C); \
64 tree_contains_struct[C][TS_DECL_COMMON] = 1; \
67 #define MARK_TS_DECL_WRTL(C) \
69 MARK_TS_DECL_COMMON (C); \
70 tree_contains_struct[C][TS_DECL_WRTL] = 1; \
73 #define MARK_TS_DECL_WITH_VIS(C) \
75 MARK_TS_DECL_WRTL (C); \
76 tree_contains_struct[C][TS_DECL_WITH_VIS] = 1; \
79 #define MARK_TS_DECL_NON_COMMON(C) \
81 MARK_TS_DECL_WITH_VIS (C); \
82 tree_contains_struct[C][TS_DECL_NON_COMMON] = 1; \
88 #define TREE_CODE_CLASS_STRING(CLASS)\
89 tree_code_class_strings[(int) (CLASS)]
91 #define TREE_CODE_CLASS(CODE) tree_code_type[(int) (CODE)]
95 #define EXCEPTIONAL_CLASS_P(NODE)\
96 (TREE_CODE_CLASS (TREE_CODE (NODE)) == tcc_exceptional)
100 #define CONSTANT_CLASS_P(NODE)\
101 (TREE_CODE_CLASS (TREE_CODE (NODE)) == tcc_constant)
105 #define TYPE_P(NODE)\
106 (TREE_CODE_CLASS (TREE_CODE (NODE)) == tcc_type)
110 #define DECL_P(NODE)\
111 (TREE_CODE_CLASS (TREE_CODE (NODE)) == tcc_declaration)
114 #define VAR_P(NODE) \
115 (TREE_CODE (NODE) == VAR_DECL)
119 #define VAR_OR_FUNCTION_DECL_P(DECL)\
120 (TREE_CODE (DECL) == VAR_DECL || TREE_CODE (DECL) == FUNCTION_DECL)
125 #define INDIRECT_REF_P(NODE)\
126 (TREE_CODE (NODE) == INDIRECT_REF)
130 #define REFERENCE_CLASS_P(NODE)\
131 (TREE_CODE_CLASS (TREE_CODE (NODE)) == tcc_reference)
135 #define COMPARISON_CLASS_P(NODE)\
136 (TREE_CODE_CLASS (TREE_CODE (NODE)) == tcc_comparison)
140 #define UNARY_CLASS_P(NODE)\
141 (TREE_CODE_CLASS (TREE_CODE (NODE)) == tcc_unary)
145 #define BINARY_CLASS_P(NODE)\
146 (TREE_CODE_CLASS (TREE_CODE (NODE)) == tcc_binary)
150 #define STATEMENT_CLASS_P(NODE)\
151 (TREE_CODE_CLASS (TREE_CODE (NODE)) == tcc_statement)
156 #define VL_EXP_CLASS_P(NODE)\
157 (TREE_CODE_CLASS (TREE_CODE (NODE)) == tcc_vl_exp)
161 #define EXPRESSION_CLASS_P(NODE)\
162 (TREE_CODE_CLASS (TREE_CODE (NODE)) == tcc_expression)
166 #define IS_TYPE_OR_DECL_P(NODE)\
167 (TYPE_P (NODE) || DECL_P (NODE))
172 #define IS_EXPR_CODE_CLASS(CLASS)\
173 ((CLASS) >= tcc_reference && (CLASS) <= tcc_expression)
177 #define EXPR_P(NODE) IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (NODE)))
179 #define TREE_CODE_LENGTH(CODE) tree_code_length[(int) (CODE)]
184 #define BUILTIN_EXP10_P(FN) \
185 ((FN) == BUILT_IN_EXP10 || (FN) == BUILT_IN_EXP10F || (FN) == BUILT_IN_EXP10L \
186 || (FN) == BUILT_IN_POW10 || (FN) == BUILT_IN_POW10F || (FN) == BUILT_IN_POW10L)
188 #define BUILTIN_EXPONENT_P(FN) (BUILTIN_EXP10_P (FN) \
189 || (FN) == BUILT_IN_EXP || (FN) == BUILT_IN_EXPF || (FN) == BUILT_IN_EXPL \
190 || (FN) == BUILT_IN_EXP2 || (FN) == BUILT_IN_EXP2F || (FN) == BUILT_IN_EXP2L)
192 #define BUILTIN_SQRT_P(FN) \
193 ((FN) == BUILT_IN_SQRT || (FN) == BUILT_IN_SQRTF || (FN) == BUILT_IN_SQRTL)
195 #define BUILTIN_CBRT_P(FN) \
196 ((FN) == BUILT_IN_CBRT || (FN) == BUILT_IN_CBRTF || (FN) == BUILT_IN_CBRTL)
198 #define BUILTIN_ROOT_P(FN) (BUILTIN_SQRT_P (FN) || BUILTIN_CBRT_P (FN))
200 #define CASE_FLT_FN(FN) case FN: case FN##F: case FN##L
201 #define CASE_FLT_FN_REENT(FN) case FN##_R: case FN##F_R: case FN##L_R
202 #define CASE_INT_FN(FN) case FN: case FN##L: case FN##LL: case FN##IMAX
209 #define TREE_CODE(NODE) ((enum tree_code) (NODE)->base.code)
210 #define TREE_SET_CODE(NODE, VALUE) ((NODE)->base.code = (VALUE))
214 #if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
216 #define TREE_CHECK(T, CODE) \
217 (tree_check ((T), __FILE__, __LINE__, __FUNCTION__, (CODE)))
219 #define TREE_NOT_CHECK(T, CODE) \
220 (tree_not_check ((T), __FILE__, __LINE__, __FUNCTION__, (CODE)))
222 #define TREE_CHECK2(T, CODE1, CODE2) \
223 (tree_check2 ((T), __FILE__, __LINE__, __FUNCTION__, (CODE1), (CODE2)))
225 #define TREE_NOT_CHECK2(T, CODE1, CODE2) \
226 (tree_not_check2 ((T), __FILE__, __LINE__, __FUNCTION__, (CODE1), (CODE2)))
228 #define TREE_CHECK3(T, CODE1, CODE2, CODE3) \
229 (tree_check3 ((T), __FILE__, __LINE__, __FUNCTION__, (CODE1), (CODE2), (CODE3)))
231 #define TREE_NOT_CHECK3(T, CODE1, CODE2, CODE3) \
232 (tree_not_check3 ((T), __FILE__, __LINE__, __FUNCTION__, \
233 (CODE1), (CODE2), (CODE3)))
235 #define TREE_CHECK4(T, CODE1, CODE2, CODE3, CODE4) \
236 (tree_check4 ((T), __FILE__, __LINE__, __FUNCTION__, \
237 (CODE1), (CODE2), (CODE3), (CODE4)))
239 #define TREE_NOT_CHECK4(T, CODE1, CODE2, CODE3, CODE4) \
240 (tree_not_check4 ((T), __FILE__, __LINE__, __FUNCTION__, \
241 (CODE1), (CODE2), (CODE3), (CODE4)))
243 #define TREE_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) \
244 (tree_check5 ((T), __FILE__, __LINE__, __FUNCTION__, \
245 (CODE1), (CODE2), (CODE3), (CODE4), (CODE5)))
247 #define TREE_NOT_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) \
248 (tree_not_check5 ((T), __FILE__, __LINE__, __FUNCTION__, \
249 (CODE1), (CODE2), (CODE3), (CODE4), (CODE5)))
251 #define CONTAINS_STRUCT_CHECK(T, STRUCT) \
252 (contains_struct_check ((T), (STRUCT), __FILE__, __LINE__, __FUNCTION__))
254 #define TREE_CLASS_CHECK(T, CLASS) \
255 (tree_class_check ((T), (CLASS), __FILE__, __LINE__, __FUNCTION__))
257 #define TREE_RANGE_CHECK(T, CODE1, CODE2) \
258 (tree_range_check ((T), (CODE1), (CODE2), __FILE__, __LINE__, __FUNCTION__))
260 #define OMP_CLAUSE_SUBCODE_CHECK(T, CODE) \
261 (omp_clause_subcode_check ((T), (CODE), __FILE__, __LINE__, __FUNCTION__))
263 #define OMP_CLAUSE_RANGE_CHECK(T, CODE1, CODE2) \
264 (omp_clause_range_check ((T), (CODE1), (CODE2), \
265 __FILE__, __LINE__, __FUNCTION__))
268 #define EXPR_CHECK(T) \
269 (expr_check ((T), __FILE__, __LINE__, __FUNCTION__))
272 #define NON_TYPE_CHECK(T) \
273 (non_type_check ((T), __FILE__, __LINE__, __FUNCTION__))
275 #define TREE_VEC_ELT_CHECK(T, I) \
276 (*(CONST_CAST2 (tree *, typeof (T)*, \
277 tree_vec_elt_check ((T), (I), __FILE__, __LINE__, __FUNCTION__))))
279 #define OMP_CLAUSE_ELT_CHECK(T, I) \
280 (*(omp_clause_elt_check ((T), (I), __FILE__, __LINE__, __FUNCTION__)))
283 #define TREE_OPERAND_CHECK(T, I) \
284 (*(CONST_CAST2 (tree*, typeof (T)*, \
285 tree_operand_check ((T), (I), __FILE__, __LINE__, __FUNCTION__))))
287 #define TREE_OPERAND_CHECK_CODE(T, CODE, I) \
288 (*(tree_operand_check_code ((T), (CODE), (I), \
289 __FILE__, __LINE__, __FUNCTION__)))
300 #define TREE_CHAIN(NODE) \
301 (CONTAINS_STRUCT_CHECK (NODE, TS_COMMON)->common.chain)
307 #define TREE_TYPE(NODE) \
308 (CONTAINS_STRUCT_CHECK (NODE, TS_TYPED)->typed.type)
312 const char *,
int,
const char *)
318 ...) ATTRIBUTE_NORETURN;
320 const
char *,
int, const
char *)
327 const enum tree_code_class,
328 const
char *,
int, const
char *)
337 const
char *,
int, const
char *)
347 enum omp_clause_code)
352 #define CONTAINS_STRUCT_CHECK(T, ENUM) (T)
353 #define TREE_CHECK(T, CODE) (T)
354 #define TREE_NOT_CHECK(T, CODE) (T)
355 #define TREE_CHECK2(T, CODE1, CODE2) (T)
356 #define TREE_NOT_CHECK2(T, CODE1, CODE2) (T)
357 #define TREE_CHECK3(T, CODE1, CODE2, CODE3) (T)
358 #define TREE_NOT_CHECK3(T, CODE1, CODE2, CODE3) (T)
359 #define TREE_CHECK4(T, CODE1, CODE2, CODE3, CODE4) (T)
360 #define TREE_NOT_CHECK4(T, CODE1, CODE2, CODE3, CODE4) (T)
361 #define TREE_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) (T)
362 #define TREE_NOT_CHECK5(T, CODE1, CODE2, CODE3, CODE4, CODE5) (T)
363 #define TREE_CLASS_CHECK(T, CODE) (T)
364 #define TREE_RANGE_CHECK(T, CODE1, CODE2) (T)
365 #define EXPR_CHECK(T) (T)
366 #define NON_TYPE_CHECK(T) (T)
367 #define TREE_VEC_ELT_CHECK(T, I) ((T)->vec.a[I])
368 #define TREE_OPERAND_CHECK(T, I) ((T)->exp.operands[I])
369 #define TREE_OPERAND_CHECK_CODE(T, CODE, I) ((T)->exp.operands[I])
370 #define OMP_CLAUSE_ELT_CHECK(T, i) ((T)->omp_clause.ops[i])
371 #define OMP_CLAUSE_RANGE_CHECK(T, CODE1, CODE2) (T)
372 #define OMP_CLAUSE_SUBCODE_CHECK(T, CODE) (T)
374 #define TREE_CHAIN(NODE) ((NODE)->common.chain)
375 #define TREE_TYPE(NODE) ((NODE)->typed.type)
379 #define TREE_BLOCK(NODE) (tree_block (NODE))
380 #define TREE_SET_BLOCK(T, B) (tree_set_block ((T), (B)))
382 #include "tree-check.h"
384 #define TYPE_CHECK(T) TREE_CLASS_CHECK (T, tcc_type)
385 #define DECL_MINIMAL_CHECK(T) CONTAINS_STRUCT_CHECK (T, TS_DECL_MINIMAL)
386 #define DECL_COMMON_CHECK(T) CONTAINS_STRUCT_CHECK (T, TS_DECL_COMMON)
387 #define DECL_WRTL_CHECK(T) CONTAINS_STRUCT_CHECK (T, TS_DECL_WRTL)
388 #define DECL_WITH_VIS_CHECK(T) CONTAINS_STRUCT_CHECK (T, TS_DECL_WITH_VIS)
389 #define DECL_NON_COMMON_CHECK(T) CONTAINS_STRUCT_CHECK (T, TS_DECL_NON_COMMON)
390 #define CST_CHECK(T) TREE_CLASS_CHECK (T, tcc_constant)
391 #define STMT_CHECK(T) TREE_CLASS_CHECK (T, tcc_statement)
392 #define VL_EXP_CHECK(T) TREE_CLASS_CHECK (T, tcc_vl_exp)
393 #define FUNC_OR_METHOD_CHECK(T) TREE_CHECK2 (T, FUNCTION_TYPE, METHOD_TYPE)
394 #define PTR_OR_REF_CHECK(T) TREE_CHECK2 (T, POINTER_TYPE, REFERENCE_TYPE)
396 #define RECORD_OR_UNION_CHECK(T) \
397 TREE_CHECK3 (T, RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE)
398 #define NOT_RECORD_OR_UNION_CHECK(T) \
399 TREE_NOT_CHECK3 (T, RECORD_TYPE, UNION_TYPE, QUAL_UNION_TYPE)
401 #define NUMERICAL_TYPE_CHECK(T) \
402 TREE_CHECK5 (T, INTEGER_TYPE, ENUMERAL_TYPE, BOOLEAN_TYPE, REAL_TYPE, \
407 #define TYPE_HASH(TYPE) (TYPE_UID (TYPE))
411 #define TREE_HASH(NODE) ((size_t) (NODE) & 0777777)
414 #define CONVERT_EXPR_CODE_P(CODE) \
415 ((CODE) == NOP_EXPR || (CODE) == CONVERT_EXPR)
418 #define CONVERT_EXPR_P(EXP) CONVERT_EXPR_CODE_P (TREE_CODE (EXP))
422 #define CASE_CONVERT \
430 #define STRIP_NOPS(EXP) \
431 (EXP) = tree_strip_nop_conversions (CONST_CAST_TREE (EXP))
435 #define STRIP_SIGN_NOPS(EXP) \
436 (EXP) = tree_strip_sign_nop_conversions (CONST_CAST_TREE (EXP))
440 #define STRIP_TYPE_NOPS(EXP) \
441 while ((CONVERT_EXPR_P (EXP) \
442 || TREE_CODE (EXP) == NON_LVALUE_EXPR) \
443 && TREE_OPERAND (EXP, 0) != error_mark_node \
444 && (TREE_TYPE (EXP) \
445 == TREE_TYPE (TREE_OPERAND (EXP, 0)))) \
446 (EXP) = TREE_OPERAND (EXP, 0)
451 #define STRIP_USELESS_TYPE_CONVERSION(EXP) \
452 (EXP) = tree_ssa_strip_useless_type_conversions (EXP)
456 #define VECTOR_TYPE_P(TYPE) (TREE_CODE (TYPE) == VECTOR_TYPE)
462 #define INTEGRAL_TYPE_P(TYPE) \
463 (TREE_CODE (TYPE) == ENUMERAL_TYPE \
464 || TREE_CODE (TYPE) == BOOLEAN_TYPE \
465 || TREE_CODE (TYPE) == INTEGER_TYPE)
469 #define NON_SAT_FIXED_POINT_TYPE_P(TYPE) \
470 (TREE_CODE (TYPE) == FIXED_POINT_TYPE && !TYPE_SATURATING (TYPE))
474 #define SAT_FIXED_POINT_TYPE_P(TYPE) \
475 (TREE_CODE (TYPE) == FIXED_POINT_TYPE && TYPE_SATURATING (TYPE))
479 #define FIXED_POINT_TYPE_P(TYPE) (TREE_CODE (TYPE) == FIXED_POINT_TYPE)
483 #define SCALAR_FLOAT_TYPE_P(TYPE) (TREE_CODE (TYPE) == REAL_TYPE)
487 #define COMPLEX_FLOAT_TYPE_P(TYPE) \
488 (TREE_CODE (TYPE) == COMPLEX_TYPE \
489 && TREE_CODE (TREE_TYPE (TYPE)) == REAL_TYPE)
493 #define VECTOR_INTEGER_TYPE_P(TYPE) \
494 (VECTOR_TYPE_P (TYPE) \
495 && TREE_CODE (TREE_TYPE (TYPE)) == INTEGER_TYPE)
500 #define VECTOR_FLOAT_TYPE_P(TYPE) \
501 (VECTOR_TYPE_P (TYPE) \
502 && TREE_CODE (TREE_TYPE (TYPE)) == REAL_TYPE)
508 #define FLOAT_TYPE_P(TYPE) \
509 (SCALAR_FLOAT_TYPE_P (TYPE) \
510 || ((TREE_CODE (TYPE) == COMPLEX_TYPE \
511 || VECTOR_TYPE_P (TYPE)) \
512 && SCALAR_FLOAT_TYPE_P (TREE_TYPE (TYPE))))
515 #define DECIMAL_FLOAT_TYPE_P(TYPE) \
516 (SCALAR_FLOAT_TYPE_P (TYPE) \
517 && DECIMAL_FLOAT_MODE_P (TYPE_MODE (TYPE)))
520 #define RECORD_OR_UNION_TYPE_P(TYPE) \
521 (TREE_CODE (TYPE) == RECORD_TYPE \
522 || TREE_CODE (TYPE) == UNION_TYPE \
523 || TREE_CODE (TYPE) == QUAL_UNION_TYPE)
528 #define AGGREGATE_TYPE_P(TYPE) \
529 (TREE_CODE (TYPE) == ARRAY_TYPE || RECORD_OR_UNION_TYPE_P (TYPE))
535 #define POINTER_TYPE_P(TYPE) \
536 (TREE_CODE (TYPE) == POINTER_TYPE || TREE_CODE (TYPE) == REFERENCE_TYPE)
539 #define FUNCTION_POINTER_TYPE_P(TYPE) \
540 (POINTER_TYPE_P (TYPE) && TREE_CODE (TREE_TYPE (TYPE)) == FUNCTION_TYPE)
543 #define COMPLETE_TYPE_P(NODE) (TYPE_SIZE (NODE) != NULL_TREE)
546 #define POINTER_BOUNDS_TYPE_P(NODE) \
547 (TREE_CODE (NODE) == POINTER_BOUNDS_TYPE)
550 #define POINTER_BOUNDS_P(NODE) \
551 (POINTER_BOUNDS_TYPE_P (TREE_TYPE (NODE)))
554 #define BOUNDED_TYPE_P(type) (POINTER_TYPE_P (type))
557 #define BOUNDED_P(node) \
558 BOUNDED_TYPE_P (TREE_TYPE (node))
561 #define VOID_TYPE_P(NODE) (TREE_CODE (NODE) == VOID_TYPE)
564 #define COMPLETE_OR_VOID_TYPE_P(NODE) \
565 (COMPLETE_TYPE_P (NODE) || VOID_TYPE_P (NODE))
568 #define COMPLETE_OR_UNBOUND_ARRAY_TYPE_P(NODE) \
569 (COMPLETE_TYPE_P (TREE_CODE (NODE) == ARRAY_TYPE ? TREE_TYPE (NODE) : (NODE)))
589 #define TREE_ADDRESSABLE(NODE) ((NODE)->base.addressable_flag)
594 #define CALL_EXPR_TAILCALL(NODE) \
595 (CALL_EXPR_CHECK (NODE)->base.addressable_flag)
599 #define CASE_LOW_SEEN(NODE) \
600 (CASE_LABEL_EXPR_CHECK (NODE)->base.addressable_flag)
602 #define PREDICT_EXPR_OUTCOME(NODE) \
603 ((enum prediction) (PREDICT_EXPR_CHECK (NODE)->base.addressable_flag))
604 #define SET_PREDICT_EXPR_OUTCOME(NODE, OUTCOME) \
605 (PREDICT_EXPR_CHECK (NODE)->base.addressable_flag = (int) OUTCOME)
606 #define PREDICT_EXPR_PREDICTOR(NODE) \
607 ((enum br_predictor)tree_low_cst (TREE_OPERAND (PREDICT_EXPR_CHECK (NODE), 0), 0))
612 #define TREE_STATIC(NODE) ((NODE)->base.static_flag)
615 #define TREE_NO_TRAMPOLINE(NODE) (ADDR_EXPR_CHECK (NODE)->base.static_flag)
620 #define CLEANUP_EH_ONLY(NODE) ((NODE)->base.static_flag)
624 #define TRY_CATCH_IS_CLEANUP(NODE) \
625 (TRY_CATCH_EXPR_CHECK (NODE)->base.static_flag)
629 #define CASE_HIGH_SEEN(NODE) \
630 (CASE_LABEL_EXPR_CHECK (NODE)->base.static_flag)
633 #define ENUM_IS_SCOPED(NODE) (ENUMERAL_TYPE_CHECK (NODE)->base.static_flag)
636 #define ENUM_IS_OPAQUE(NODE) (ENUMERAL_TYPE_CHECK (NODE)->base.private_flag)
643 #define TREE_NO_WARNING(NODE) ((NODE)->base.nowarning_flag)
646 #define TYPE_ARTIFICIAL(NODE) (TYPE_CHECK (NODE)->base.nowarning_flag)
650 #define TREE_SYMBOL_REFERENCED(NODE) \
651 (IDENTIFIER_NODE_CHECK (NODE)->base.static_flag)
655 #define TYPE_REF_CAN_ALIAS_ALL(NODE) \
656 (PTR_OR_REF_CHECK (NODE)->base.static_flag)
661 #define TREE_OVERFLOW(NODE) (CST_CHECK (NODE)->base.public_flag)
665 #define TREE_OVERFLOW_P(EXPR) \
666 (CONSTANT_CLASS_P (EXPR) && TREE_OVERFLOW (EXPR))
673 #define TREE_PUBLIC(NODE) ((NODE)->base.public_flag)
677 #define TYPE_CACHED_VALUES_P(NODE) (TYPE_CHECK (NODE)->base.public_flag)
681 #define SAVE_EXPR_RESOLVED_P(NODE) \
682 (SAVE_EXPR_CHECK (NODE)->base.public_flag)
686 #define CALL_EXPR_VA_ARG_PACK(NODE) \
687 (CALL_EXPR_CHECK (NODE)->base.public_flag)
694 #define TREE_SIDE_EFFECTS(NODE) \
695 (NON_TYPE_CHECK (NODE)->base.side_effects_flag)
700 #define FORCED_LABEL(NODE) (LABEL_DECL_CHECK (NODE)->base.side_effects_flag)
715 #define TREE_THIS_VOLATILE(NODE) ((NODE)->base.volatile_flag)
726 #define TREE_THIS_NOTRAP(NODE) \
727 (TREE_CHECK5 (NODE, INDIRECT_REF, MEM_REF, TARGET_MEM_REF, ARRAY_REF, \
728 ARRAY_RANGE_REF)->base.nothrow_flag)
734 #define TREE_READONLY(NODE) (NON_TYPE_CHECK (NODE)->base.readonly_flag)
738 #define TREE_CONSTANT(NODE) (NON_TYPE_CHECK (NODE)->base.constant_flag)
741 #define TYPE_SIZES_GIMPLIFIED(NODE) \
742 (TYPE_CHECK (NODE)->base.constant_flag)
745 #define DECL_UNSIGNED(NODE) \
746 (DECL_COMMON_CHECK (NODE)->base.u.bits.unsigned_flag)
749 #define TYPE_UNSIGNED(NODE) (TYPE_CHECK (NODE)->base.u.bits.unsigned_flag)
753 #define TYPE_OVERFLOW_WRAPS(TYPE) \
754 (TYPE_UNSIGNED (TYPE) || flag_wrapv)
764 #define TYPE_OVERFLOW_UNDEFINED(TYPE) \
765 (!TYPE_UNSIGNED (TYPE) && !flag_wrapv && !flag_trapv && flag_strict_overflow)
769 #define TYPE_OVERFLOW_TRAPS(TYPE) \
770 (!TYPE_UNSIGNED (TYPE) && flag_trapv)
773 #define POINTER_TYPE_OVERFLOW_UNDEFINED (flag_strict_overflow)
784 #define TREE_ASM_WRITTEN(NODE) ((NODE)->base.asm_written_flag)
791 #define TREE_USED(NODE) ((NODE)->base.used_flag)
797 #define TREE_NOTHROW(NODE) ((NODE)->base.nothrow_flag)
801 #define CALL_EXPR_RETURN_SLOT_OPT(NODE) \
802 (CALL_EXPR_CHECK (NODE)->base.private_flag)
805 #define CILK_SPAWN_FN(NODE) TREE_OPERAND (CILK_SPAWN_STMT_CHECK (NODE), 0)
810 #define DECL_BY_REFERENCE(NODE) \
811 (TREE_CHECK3 (NODE, VAR_DECL, PARM_DECL, \
812 RESULT_DECL)->decl_common.decl_by_reference_flag)
816 #define DECL_READ_P(NODE) \
817 (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_read_flag)
821 #define DECL_NONSHAREABLE(NODE) \
822 (TREE_CHECK2 (NODE, VAR_DECL, \
823 RESULT_DECL)->decl_common.decl_nonshareable_flag)
827 #define CALL_FROM_THUNK_P(NODE) (CALL_EXPR_CHECK (NODE)->base.protected_flag)
831 #define CALL_ALLOCA_FOR_VAR_P(NODE) \
832 (CALL_EXPR_CHECK (NODE)->base.protected_flag)
843 #define TYPE_ALIGN_OK(NODE) (TYPE_CHECK (NODE)->base.nothrow_flag)
846 #define TREE_PRIVATE(NODE) ((NODE)->base.private_flag)
848 #define TREE_PROTECTED(NODE) ((NODE)->base.protected_flag)
851 #define TYPE_REF_IS_RVALUE(NODE) \
852 (REFERENCE_TYPE_CHECK (NODE)->base.private_flag)
856 #define TREE_DEPRECATED(NODE) \
857 ((NODE)->base.deprecated_flag)
861 #define IDENTIFIER_TRANSPARENT_ALIAS(NODE) \
862 (IDENTIFIER_NODE_CHECK (NODE)->base.deprecated_flag)
865 #define TYPE_SATURATING(NODE) (TYPE_CHECK (NODE)->base.u.bits.saturating_flag)
868 #define TREE_LANG_FLAG_0(NODE) \
869 (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_0)
870 #define TREE_LANG_FLAG_1(NODE) \
871 (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_1)
872 #define TREE_LANG_FLAG_2(NODE) \
873 (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_2)
874 #define TREE_LANG_FLAG_3(NODE) \
875 (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_3)
876 #define TREE_LANG_FLAG_4(NODE) \
877 (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_4)
878 #define TREE_LANG_FLAG_5(NODE) \
879 (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_5)
880 #define TREE_LANG_FLAG_6(NODE) \
881 (TREE_NOT_CHECK2 (NODE, TREE_VEC, SSA_NAME)->base.u.bits.lang_flag_6)
889 #define TREE_INT_CST(NODE) (INTEGER_CST_CHECK (NODE)->int_cst.int_cst)
890 #define TREE_INT_CST_LOW(NODE) (TREE_INT_CST (NODE).low)
891 #define TREE_INT_CST_HIGH(NODE) (TREE_INT_CST (NODE).high)
893 #define INT_CST_LT(A, B) \
894 (TREE_INT_CST_HIGH (A) < TREE_INT_CST_HIGH (B) \
895 || (TREE_INT_CST_HIGH (A) == TREE_INT_CST_HIGH (B) \
896 && TREE_INT_CST_LOW (A) < TREE_INT_CST_LOW (B)))
898 #define INT_CST_LT_UNSIGNED(A, B) \
899 (((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (A) \
900 < (unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (B)) \
901 || (((unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (A) \
902 == (unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (B)) \
903 && TREE_INT_CST_LOW (A) < TREE_INT_CST_LOW (B)))
905 #define TREE_REAL_CST_PTR(NODE) (REAL_CST_CHECK (NODE)->real_cst.real_cst_ptr)
906 #define TREE_REAL_CST(NODE) (*TREE_REAL_CST_PTR (NODE))
908 #define TREE_FIXED_CST_PTR(NODE) \
909 (FIXED_CST_CHECK (NODE)->fixed_cst.fixed_cst_ptr)
910 #define TREE_FIXED_CST(NODE) (*TREE_FIXED_CST_PTR (NODE))
914 #define TREE_STRING_LENGTH(NODE) (STRING_CST_CHECK (NODE)->string.length)
915 #define TREE_STRING_POINTER(NODE) \
916 ((const char *)(STRING_CST_CHECK (NODE)->string.str))
919 #define TREE_REALPART(NODE) (COMPLEX_CST_CHECK (NODE)->complex.real)
920 #define TREE_IMAGPART(NODE) (COMPLEX_CST_CHECK (NODE)->complex.imag)
923 #define VECTOR_CST_NELTS(NODE) (TYPE_VECTOR_SUBPARTS (TREE_TYPE (NODE)))
924 #define VECTOR_CST_ELTS(NODE) (VECTOR_CST_CHECK (NODE)->vector.elts)
925 #define VECTOR_CST_ELT(NODE,IDX) (VECTOR_CST_CHECK (NODE)->vector.elts[IDX])
929 #define IDENTIFIER_LENGTH(NODE) \
930 (IDENTIFIER_NODE_CHECK (NODE)->identifier.id.len)
931 #define IDENTIFIER_POINTER(NODE) \
932 ((const char *) IDENTIFIER_NODE_CHECK (NODE)->identifier.id.str)
933 #define IDENTIFIER_HASH_VALUE(NODE) \
934 (IDENTIFIER_NODE_CHECK (NODE)->identifier.id.hash_value)
939 #define HT_IDENT_TO_GCC_IDENT(NODE) \
940 ((tree) ((char *) (NODE) - sizeof (struct tree_common)))
941 #define GCC_IDENT_TO_HT_IDENT(NODE) (&((struct tree_identifier *) (NODE))->id)
944 #define TREE_PURPOSE(NODE) (TREE_LIST_CHECK (NODE)->list.purpose)
945 #define TREE_VALUE(NODE) (TREE_LIST_CHECK (NODE)->list.value)
948 #define TREE_VEC_LENGTH(NODE) (TREE_VEC_CHECK (NODE)->base.u.length)
949 #define TREE_VEC_END(NODE) \
950 ((void) TREE_VEC_CHECK (NODE), &((NODE)->vec.a[(NODE)->vec.base.u.length]))
952 #define TREE_VEC_ELT(NODE,I) TREE_VEC_ELT_CHECK (NODE, I)
955 #define CONSTRUCTOR_ELTS(NODE) (CONSTRUCTOR_CHECK (NODE)->constructor.elts)
956 #define CONSTRUCTOR_ELT(NODE,IDX) \
957 (&(*CONSTRUCTOR_ELTS (NODE))[IDX])
958 #define CONSTRUCTOR_NELTS(NODE) \
959 (vec_safe_length (CONSTRUCTOR_ELTS (NODE)))
964 #define FOR_EACH_CONSTRUCTOR_VALUE(V, IX, VAL) \
965 for (IX = 0; (IX >= vec_safe_length (V)) \
967 : ((VAL = (*(V))[IX].value), \
974 #define FOR_EACH_CONSTRUCTOR_ELT(V, IX, INDEX, VAL) \
975 for (IX = 0; (IX >= vec_safe_length (V)) \
977 : (((void) (VAL = (*V)[IX].value)), \
978 (INDEX = (*V)[IX].index), \
983 #define CONSTRUCTOR_APPEND_ELT(V, INDEX, VALUE) \
985 constructor_elt _ce___ = {INDEX, VALUE}; \
986 vec_safe_push ((V), _ce___); \
991 #define CONSTRUCTOR_BITFIELD_P(NODE) \
992 (DECL_BIT_FIELD (FIELD_DECL_CHECK (NODE)) && DECL_MODE (NODE) != BLKmode)
999 #define TREE_CLOBBER_P(NODE) \
1000 (TREE_CODE (NODE) == CONSTRUCTOR && TREE_THIS_VOLATILE (NODE))
1005 #define IS_EMPTY_STMT(NODE) (TREE_CODE (NODE) == NOP_EXPR \
1006 && VOID_TYPE_P (TREE_TYPE (NODE)) \
1007 && integer_zerop (TREE_OPERAND (NODE, 0)))
1010 #define TREE_OPERAND_LENGTH(NODE) tree_operand_length (NODE)
1011 #define TREE_OPERAND(NODE, I) TREE_OPERAND_CHECK (NODE, I)
1018 #define VL_EXP_OPERAND_LENGTH(NODE) \
1019 ((int)TREE_INT_CST_LOW (VL_EXP_CHECK (NODE)->exp.operands[0]))
1022 #define MAY_HAVE_DEBUG_STMTS (flag_var_tracking_assignments)
1025 #define LOOP_EXPR_BODY(NODE) TREE_OPERAND_CHECK_CODE (NODE, LOOP_EXPR, 0)
1030 #define EXPR_LOCATION(NODE) \
1031 (CAN_HAVE_LOCATION_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION)
1032 #define SET_EXPR_LOCATION(NODE, LOCUS) EXPR_CHECK ((NODE))->exp.locus = (LOCUS)
1033 #define EXPR_HAS_LOCATION(NODE) (LOCATION_LOCUS (EXPR_LOCATION (NODE)) \
1034 != UNKNOWN_LOCATION)
1037 #define EXPR_LOC_OR_HERE(NODE) (EXPR_HAS_LOCATION (NODE) \
1038 ? (NODE)->exp.locus : input_location)
1039 #define EXPR_LOC_OR_LOC(NODE, LOCUS) (EXPR_HAS_LOCATION (NODE) \
1040 ? (NODE)->exp.locus : (LOCUS))
1041 #define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus)
1042 #define EXPR_LINENO(NODE) LOCATION_LINE (EXPR_CHECK (NODE)->exp.locus)
1046 #define CAN_HAVE_LOCATION_P(NODE) ((NODE) && EXPR_P (NODE))
1051 #define TARGET_EXPR_SLOT(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 0)
1052 #define TARGET_EXPR_INITIAL(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 1)
1053 #define TARGET_EXPR_CLEANUP(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 2)
1057 #define DECL_EXPR_DECL(NODE) TREE_OPERAND (DECL_EXPR_CHECK (NODE), 0)
1059 #define EXIT_EXPR_COND(NODE) TREE_OPERAND (EXIT_EXPR_CHECK (NODE), 0)
1062 #define COMPOUND_LITERAL_EXPR_DECL_EXPR(NODE) \
1063 TREE_OPERAND (COMPOUND_LITERAL_EXPR_CHECK (NODE), 0)
1064 #define COMPOUND_LITERAL_EXPR_DECL(NODE) \
1065 DECL_EXPR_DECL (COMPOUND_LITERAL_EXPR_DECL_EXPR (NODE))
1070 #define SWITCH_COND(NODE) TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 0)
1071 #define SWITCH_BODY(NODE) TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 1)
1072 #define SWITCH_LABELS(NODE) TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 2)
1076 #define CASE_LOW(NODE) TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 0)
1077 #define CASE_HIGH(NODE) TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 1)
1078 #define CASE_LABEL(NODE) TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 2)
1079 #define CASE_CHAIN(NODE) TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 3)
1083 #define TMR_BASE(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 0))
1084 #define TMR_OFFSET(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 1))
1085 #define TMR_INDEX(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 2))
1086 #define TMR_STEP(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 3))
1087 #define TMR_INDEX2(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 4))
1090 #define BIND_EXPR_VARS(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 0))
1091 #define BIND_EXPR_BODY(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 1))
1092 #define BIND_EXPR_BLOCK(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 2))
1096 #define GOTO_DESTINATION(NODE) TREE_OPERAND ((NODE), 0)
1102 #define ASM_STRING(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 0)
1103 #define ASM_OUTPUTS(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 1)
1104 #define ASM_INPUTS(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 2)
1105 #define ASM_CLOBBERS(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 3)
1106 #define ASM_LABELS(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 4)
1109 #define ASM_INPUT_P(NODE) (ASM_EXPR_CHECK (NODE)->base.static_flag)
1110 #define ASM_VOLATILE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.public_flag)
1113 #define COND_EXPR_COND(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 0))
1114 #define COND_EXPR_THEN(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 1))
1115 #define COND_EXPR_ELSE(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 2))
1118 #define CHREC_VAR(NODE) TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 0)
1119 #define CHREC_LEFT(NODE) TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 1)
1120 #define CHREC_RIGHT(NODE) TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 2)
1121 #define CHREC_VARIABLE(NODE) TREE_INT_CST_LOW (CHREC_VAR (NODE))
1125 #define LABEL_EXPR_LABEL(NODE) TREE_OPERAND (LABEL_EXPR_CHECK (NODE), 0)
1131 #define CATCH_TYPES(NODE) TREE_OPERAND (CATCH_EXPR_CHECK (NODE), 0)
1132 #define CATCH_BODY(NODE) TREE_OPERAND (CATCH_EXPR_CHECK (NODE), 1)
1135 #define EH_FILTER_TYPES(NODE) TREE_OPERAND (EH_FILTER_EXPR_CHECK (NODE), 0)
1136 #define EH_FILTER_FAILURE(NODE) TREE_OPERAND (EH_FILTER_EXPR_CHECK (NODE), 1)
1139 #define OBJ_TYPE_REF_EXPR(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 0)
1140 #define OBJ_TYPE_REF_OBJECT(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 1)
1141 #define OBJ_TYPE_REF_TOKEN(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 2)
1144 #define ASSERT_EXPR_VAR(NODE) TREE_OPERAND (ASSERT_EXPR_CHECK (NODE), 0)
1145 #define ASSERT_EXPR_COND(NODE) TREE_OPERAND (ASSERT_EXPR_CHECK (NODE), 1)
1149 #define CALL_EXPR_FN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 1)
1150 #define CALL_EXPR_STATIC_CHAIN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 2)
1151 #define CALL_EXPR_ARG(NODE, I) TREE_OPERAND (CALL_EXPR_CHECK (NODE), (I) + 3)
1152 #define call_expr_nargs(NODE) (VL_EXP_OPERAND_LENGTH (NODE) - 3)
1160 #define CALL_EXPR_ARGP(NODE) \
1161 (&(TREE_OPERAND (CALL_EXPR_CHECK (NODE), 0)) + 3)
1164 #define TRANSACTION_EXPR_BODY(NODE) \
1165 TREE_OPERAND (TRANSACTION_EXPR_CHECK (NODE), 0)
1166 #define TRANSACTION_EXPR_OUTER(NODE) \
1167 (TRANSACTION_EXPR_CHECK (NODE)->base.static_flag)
1168 #define TRANSACTION_EXPR_RELAXED(NODE) \
1169 (TRANSACTION_EXPR_CHECK (NODE)->base.public_flag)
1173 #define OMP_BODY(NODE) \
1174 TREE_OPERAND (TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_CRITICAL), 0)
1175 #define OMP_CLAUSES(NODE) \
1176 TREE_OPERAND (TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_SINGLE), 1)
1178 #define OMP_PARALLEL_BODY(NODE) TREE_OPERAND (OMP_PARALLEL_CHECK (NODE), 0)
1179 #define OMP_PARALLEL_CLAUSES(NODE) TREE_OPERAND (OMP_PARALLEL_CHECK (NODE), 1)
1181 #define OMP_TASK_BODY(NODE) TREE_OPERAND (OMP_TASK_CHECK (NODE), 0)
1182 #define OMP_TASK_CLAUSES(NODE) TREE_OPERAND (OMP_TASK_CHECK (NODE), 1)
1184 #define OMP_TASKREG_CHECK(NODE) TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_TASK)
1185 #define OMP_TASKREG_BODY(NODE) TREE_OPERAND (OMP_TASKREG_CHECK (NODE), 0)
1186 #define OMP_TASKREG_CLAUSES(NODE) TREE_OPERAND (OMP_TASKREG_CHECK (NODE), 1)
1188 #define OMP_LOOP_CHECK(NODE) TREE_RANGE_CHECK (NODE, OMP_FOR, OMP_DISTRIBUTE)
1189 #define OMP_FOR_BODY(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 0)
1190 #define OMP_FOR_CLAUSES(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 1)
1191 #define OMP_FOR_INIT(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 2)
1192 #define OMP_FOR_COND(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 3)
1193 #define OMP_FOR_INCR(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 4)
1194 #define OMP_FOR_PRE_BODY(NODE) TREE_OPERAND (OMP_LOOP_CHECK (NODE), 5)
1196 #define OMP_SECTIONS_BODY(NODE) TREE_OPERAND (OMP_SECTIONS_CHECK (NODE), 0)
1197 #define OMP_SECTIONS_CLAUSES(NODE) TREE_OPERAND (OMP_SECTIONS_CHECK (NODE), 1)
1199 #define OMP_SECTION_BODY(NODE) TREE_OPERAND (OMP_SECTION_CHECK (NODE), 0)
1201 #define OMP_SINGLE_BODY(NODE) TREE_OPERAND (OMP_SINGLE_CHECK (NODE), 0)
1202 #define OMP_SINGLE_CLAUSES(NODE) TREE_OPERAND (OMP_SINGLE_CHECK (NODE), 1)
1204 #define OMP_MASTER_BODY(NODE) TREE_OPERAND (OMP_MASTER_CHECK (NODE), 0)
1206 #define OMP_TASKGROUP_BODY(NODE) TREE_OPERAND (OMP_TASKGROUP_CHECK (NODE), 0)
1208 #define OMP_ORDERED_BODY(NODE) TREE_OPERAND (OMP_ORDERED_CHECK (NODE), 0)
1210 #define OMP_CRITICAL_BODY(NODE) TREE_OPERAND (OMP_CRITICAL_CHECK (NODE), 0)
1211 #define OMP_CRITICAL_NAME(NODE) TREE_OPERAND (OMP_CRITICAL_CHECK (NODE), 1)
1213 #define OMP_TEAMS_BODY(NODE) TREE_OPERAND (OMP_TEAMS_CHECK (NODE), 0)
1214 #define OMP_TEAMS_CLAUSES(NODE) TREE_OPERAND (OMP_TEAMS_CHECK (NODE), 1)
1216 #define OMP_TARGET_DATA_BODY(NODE) \
1217 TREE_OPERAND (OMP_TARGET_DATA_CHECK (NODE), 0)
1218 #define OMP_TARGET_DATA_CLAUSES(NODE)\
1219 TREE_OPERAND (OMP_TARGET_DATA_CHECK (NODE), 1)
1221 #define OMP_TARGET_BODY(NODE) TREE_OPERAND (OMP_TARGET_CHECK (NODE), 0)
1222 #define OMP_TARGET_CLAUSES(NODE) TREE_OPERAND (OMP_TARGET_CHECK (NODE), 1)
1224 #define OMP_TARGET_UPDATE_CLAUSES(NODE)\
1225 TREE_OPERAND (OMP_TARGET_UPDATE_CHECK (NODE), 0)
1227 #define OMP_CLAUSE_SIZE(NODE) \
1228 OMP_CLAUSE_OPERAND (OMP_CLAUSE_RANGE_CHECK (OMP_CLAUSE_CHECK (NODE), \
1232 #define OMP_CLAUSE_CHAIN(NODE) TREE_CHAIN (OMP_CLAUSE_CHECK (NODE))
1233 #define OMP_CLAUSE_DECL(NODE) \
1234 OMP_CLAUSE_OPERAND (OMP_CLAUSE_RANGE_CHECK (OMP_CLAUSE_CHECK (NODE), \
1235 OMP_CLAUSE_PRIVATE, \
1236 OMP_CLAUSE__LOOPTEMP_), 0)
1237 #define OMP_CLAUSE_HAS_LOCATION(NODE) \
1238 (LOCATION_LOCUS ((OMP_CLAUSE_CHECK (NODE))->omp_clause.locus) \
1239 != UNKNOWN_LOCATION)
1240 #define OMP_CLAUSE_LOCATION(NODE) (OMP_CLAUSE_CHECK (NODE))->omp_clause.locus
1244 #define OMP_SECTION_LAST(NODE) \
1245 (OMP_SECTION_CHECK (NODE)->base.private_flag)
1249 #define OMP_PARALLEL_COMBINED(NODE) \
1250 (OMP_PARALLEL_CHECK (NODE)->base.private_flag)
1254 #define OMP_ATOMIC_SEQ_CST(NODE) \
1255 (TREE_RANGE_CHECK (NODE, OMP_ATOMIC, \
1256 OMP_ATOMIC_CAPTURE_NEW)->base.private_flag)
1261 #define OMP_CLAUSE_PRIVATE_DEBUG(NODE) \
1262 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PRIVATE)->base.public_flag)
1266 #define OMP_CLAUSE_PRIVATE_OUTER_REF(NODE) \
1267 TREE_PRIVATE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PRIVATE))
1271 #define OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE(NODE) \
1272 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_LASTPRIVATE)->base.public_flag)
1273 #define OMP_CLAUSE_LASTPRIVATE_STMT(NODE) \
1274 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, \
1275 OMP_CLAUSE_LASTPRIVATE),\
1277 #define OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ(NODE) \
1278 (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_init
1280 #define OMP_CLAUSE_FINAL_EXPR(NODE) \
1281 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_FINAL), 0)
1282 #define OMP_CLAUSE_IF_EXPR(NODE) \
1283 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_IF), 0)
1284 #define OMP_CLAUSE_NUM_THREADS_EXPR(NODE) \
1285 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_NUM_THREADS),0)
1286 #define OMP_CLAUSE_SCHEDULE_CHUNK_EXPR(NODE) \
1287 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SCHEDULE), 0)
1289 #define OMP_CLAUSE_DEPEND_KIND(NODE) \
1290 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DEPEND)->omp_clause.subcode.depend_kind)
1292 #define OMP_CLAUSE_MAP_KIND(NODE) \
1293 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MAP)->omp_clause.subcode.map_kind)
1298 #define OMP_CLAUSE_MAP_ZERO_BIAS_ARRAY_SECTION(NODE) \
1299 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_MAP)->base.public_flag)
1301 #define OMP_CLAUSE_PROC_BIND_KIND(NODE) \
1302 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PROC_BIND)->omp_clause.subcode.proc_bind_kind)
1304 #define OMP_CLAUSE_COLLAPSE_EXPR(NODE) \
1305 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 0)
1306 #define OMP_CLAUSE_COLLAPSE_ITERVAR(NODE) \
1307 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 1)
1308 #define OMP_CLAUSE_COLLAPSE_COUNT(NODE) \
1309 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 2)
1311 #define OMP_CLAUSE_REDUCTION_CODE(NODE) \
1312 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION)->omp_clause.subcode.reduction_code)
1313 #define OMP_CLAUSE_REDUCTION_INIT(NODE) \
1314 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 1)
1315 #define OMP_CLAUSE_REDUCTION_MERGE(NODE) \
1316 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 2)
1317 #define OMP_CLAUSE_REDUCTION_GIMPLE_INIT(NODE) \
1318 (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_init
1319 #define OMP_CLAUSE_REDUCTION_GIMPLE_MERGE(NODE) \
1320 (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_merge
1321 #define OMP_CLAUSE_REDUCTION_PLACEHOLDER(NODE) \
1322 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 3)
1326 #define OMP_CLAUSE_REDUCTION_OMP_ORIG_REF(NODE) \
1327 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION)->base.public_flag)
1331 #define OMP_CLAUSE_LINEAR_NO_COPYIN(NODE) \
1332 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_LINEAR)->base.public_flag)
1336 #define OMP_CLAUSE_LINEAR_NO_COPYOUT(NODE) \
1337 TREE_PRIVATE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_LINEAR))
1339 #define OMP_CLAUSE_LINEAR_STEP(NODE) \
1340 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_LINEAR), 1)
1342 #define OMP_CLAUSE_ALIGNED_ALIGNMENT(NODE) \
1343 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_ALIGNED), 1)
1345 #define OMP_CLAUSE_NUM_TEAMS_EXPR(NODE) \
1346 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_NUM_TEAMS), 0)
1348 #define OMP_CLAUSE_THREAD_LIMIT_EXPR(NODE) \
1349 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, \
1350 OMP_CLAUSE_THREAD_LIMIT), 0)
1352 #define OMP_CLAUSE_DEVICE_ID(NODE) \
1353 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DEVICE), 0)
1355 #define OMP_CLAUSE_DIST_SCHEDULE_CHUNK_EXPR(NODE) \
1356 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, \
1357 OMP_CLAUSE_DIST_SCHEDULE), 0)
1359 #define OMP_CLAUSE_SAFELEN_EXPR(NODE) \
1360 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SAFELEN), 0)
1362 #define OMP_CLAUSE_SIMDLEN_EXPR(NODE) \
1363 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SIMDLEN), 0)
1365 #define OMP_CLAUSE__SIMDUID__DECL(NODE) \
1366 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE__SIMDUID_), 0)
1368 #define OMP_CLAUSE_SCHEDULE_KIND(NODE) \
1369 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SCHEDULE)->omp_clause.subcode.schedule_kind)
1371 #define OMP_CLAUSE_DEFAULT_KIND(NODE) \
1372 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DEFAULT)->omp_clause.subcode.default_kind)
1378 #define SSA_NAME_IDENTIFIER(NODE) \
1379 (SSA_NAME_CHECK (NODE)->ssa_name.var != NULL_TREE \
1380 ? (TREE_CODE ((NODE)->ssa_name.var) == IDENTIFIER_NODE \
1381 ? (NODE)->ssa_name.var \
1382 : DECL_NAME ((NODE)->ssa_name.var)) \
1388 #define SSA_NAME_VAR(NODE) \
1389 (SSA_NAME_CHECK (NODE)->ssa_name.var == NULL_TREE \
1390 || TREE_CODE ((NODE)->ssa_name.var) == IDENTIFIER_NODE \
1391 ? NULL_TREE : (NODE)->ssa_name.var)
1393 #define SET_SSA_NAME_VAR_OR_IDENTIFIER(NODE,VAR) \
1394 do { SSA_NAME_CHECK (NODE)->ssa_name.var = (VAR); } while (0)
1397 #define SSA_NAME_DEF_STMT(NODE) SSA_NAME_CHECK (NODE)->ssa_name.def_stmt
1401 #define SSA_NAME_VERSION(NODE) SSA_NAME_CHECK (NODE)->base.u.version
1406 #define SSA_NAME_OCCURS_IN_ABNORMAL_PHI(NODE) \
1407 SSA_NAME_CHECK (NODE)->base.asm_written_flag
1412 #define SSA_NAME_IN_FREE_LIST(NODE) \
1413 SSA_NAME_CHECK (NODE)->base.nothrow_flag
1420 #define SSA_NAME_IS_DEFAULT_DEF(NODE) \
1421 SSA_NAME_CHECK (NODE)->base.default_def_flag
1424 #define SSA_NAME_PTR_INFO(N) \
1425 SSA_NAME_CHECK (N)->ssa_name.info.ptr_info
1428 #define SSA_NAME_RANGE_INFO(N) \
1429 SSA_NAME_CHECK (N)->ssa_name.info.range_info
1432 #define SSA_NAME_IMM_USE_NODE(NODE) SSA_NAME_CHECK (NODE)->ssa_name.imm_uses
1434 #define OMP_CLAUSE_CODE(NODE) \
1435 (OMP_CLAUSE_CHECK (NODE))->omp_clause.code
1437 #define OMP_CLAUSE_SET_CODE(NODE, CODE) \
1438 ((OMP_CLAUSE_CHECK (NODE))->omp_clause.code = (CODE))
1440 #define OMP_CLAUSE_OPERAND(NODE, I) \
1441 OMP_CLAUSE_ELT_CHECK (NODE, I)
1444 #define BLOCK_VARS(NODE) (BLOCK_CHECK (NODE)->block.vars)
1445 #define BLOCK_NONLOCALIZED_VARS(NODE) \
1446 (BLOCK_CHECK (NODE)->block.nonlocalized_vars)
1447 #define BLOCK_NUM_NONLOCALIZED_VARS(NODE) \
1448 vec_safe_length (BLOCK_NONLOCALIZED_VARS (NODE))
1449 #define BLOCK_NONLOCALIZED_VAR(NODE,N) (*BLOCK_NONLOCALIZED_VARS (NODE))[N]
1450 #define BLOCK_SUBBLOCKS(NODE) (BLOCK_CHECK (NODE)->block.subblocks)
1451 #define BLOCK_SUPERCONTEXT(NODE) (BLOCK_CHECK (NODE)->block.supercontext)
1452 #define BLOCK_CHAIN(NODE) (BLOCK_CHECK (NODE)->block.chain)
1453 #define BLOCK_ABSTRACT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.abstract_origin)
1454 #define BLOCK_ABSTRACT(NODE) (BLOCK_CHECK (NODE)->block.abstract_flag)
1457 #define BLOCK_SAME_RANGE(NODE) (BLOCK_CHECK (NODE)->base.u.bits.nameless_flag)
1462 #define BLOCK_NUMBER(NODE) (BLOCK_CHECK (NODE)->block.block_num)
1486 #define BLOCK_FRAGMENT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.fragment_origin)
1487 #define BLOCK_FRAGMENT_CHAIN(NODE) (BLOCK_CHECK (NODE)->block.fragment_chain)
1493 #define BLOCK_SOURCE_LOCATION(NODE) (BLOCK_CHECK (NODE)->block.locus)
1506 #define TYPE_UID(NODE) (TYPE_CHECK (NODE)->type_common.uid)
1507 #define TYPE_SIZE(NODE) (TYPE_CHECK (NODE)->type_common.size)
1508 #define TYPE_SIZE_UNIT(NODE) (TYPE_CHECK (NODE)->type_common.size_unit)
1509 #define TYPE_POINTER_TO(NODE) (TYPE_CHECK (NODE)->type_common.pointer_to)
1510 #define TYPE_REFERENCE_TO(NODE) (TYPE_CHECK (NODE)->type_common.reference_to)
1511 #define TYPE_PRECISION(NODE) (TYPE_CHECK (NODE)->type_common.precision)
1512 #define TYPE_NAME(NODE) (TYPE_CHECK (NODE)->type_common.name)
1513 #define TYPE_NEXT_VARIANT(NODE) (TYPE_CHECK (NODE)->type_common.next_variant)
1514 #define TYPE_MAIN_VARIANT(NODE) (TYPE_CHECK (NODE)->type_common.main_variant)
1515 #define TYPE_CONTEXT(NODE) (TYPE_CHECK (NODE)->type_common.context)
1519 #define TYPE_MODE(NODE) \
1520 (VECTOR_TYPE_P (TYPE_CHECK (NODE)) \
1521 ? vector_type_mode (NODE) : (NODE)->type_common.mode)
1522 #define SET_TYPE_MODE(NODE, MODE) \
1523 (TYPE_CHECK (NODE)->type_common.mode = (MODE))
1541 #define TYPE_CANONICAL(NODE) (TYPE_CHECK (NODE)->type_common.canonical)
1548 #define TYPE_STRUCTURAL_EQUALITY_P(NODE) (TYPE_CANONICAL (NODE) == NULL_TREE)
1551 #define SET_TYPE_STRUCTURAL_EQUALITY(NODE) (TYPE_CANONICAL (NODE) = NULL_TREE)
1553 #define TYPE_IBIT(NODE) (GET_MODE_IBIT (TYPE_MODE (NODE)))
1554 #define TYPE_FBIT(NODE) (GET_MODE_FBIT (TYPE_MODE (NODE)))
1561 #define TYPE_ALIAS_SET(NODE) (TYPE_CHECK (NODE)->type_common.alias_set)
1565 #define TYPE_ALIAS_SET_KNOWN_P(NODE) \
1566 (TYPE_CHECK (NODE)->type_common.alias_set != -1)
1570 #define TYPE_ATTRIBUTES(NODE) (TYPE_CHECK (NODE)->type_common.attributes)
1574 #define TYPE_ALIGN(NODE) (TYPE_CHECK (NODE)->type_common.align)
1578 #define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->base.u.bits.user_align)
1581 #define TYPE_ALIGN_UNIT(NODE) (TYPE_ALIGN (NODE) / BITS_PER_UNIT)
1590 #define TYPE_STUB_DECL(NODE) (TREE_CHAIN (TYPE_CHECK (NODE)))
1595 #define TYPE_NO_FORCE_BLK(NODE) \
1596 (TYPE_CHECK (NODE)->type_common.no_force_blk_flag)
1599 #define TYPE_VOLATILE(NODE) (TYPE_CHECK (NODE)->base.volatile_flag)
1602 #define TYPE_READONLY(NODE) (TYPE_CHECK (NODE)->base.readonly_flag)
1606 #define TYPE_RESTRICT(NODE) (TYPE_CHECK (NODE)->type_common.restrict_flag)
1609 #define TYPE_NAMELESS(NODE) (TYPE_CHECK (NODE)->base.u.bits.nameless_flag)
1612 #define TYPE_ADDR_SPACE(NODE) (TYPE_CHECK (NODE)->base.u.bits.address_space)
1616 #define ENCODE_QUAL_ADDR_SPACE(NUM) ((NUM & 0xFF) << 8)
1617 #define DECODE_QUAL_ADDR_SPACE(X) (((X) >> 8) & 0xFF)
1620 #define CLEAR_QUAL_ADDR_SPACE(X) ((X) & ~0xFF00)
1624 #define KEEP_QUAL_ADDR_SPACE(X) ((X) & 0xFF00)
1627 #define TYPE_QUALS(NODE) \
1628 ((int) ((TYPE_READONLY (NODE) * TYPE_QUAL_CONST) \
1629 | (TYPE_VOLATILE (NODE) * TYPE_QUAL_VOLATILE) \
1630 | (TYPE_RESTRICT (NODE) * TYPE_QUAL_RESTRICT) \
1631 | (ENCODE_QUAL_ADDR_SPACE (TYPE_ADDR_SPACE (NODE)))))
1634 #define TYPE_QUALS_NO_ADDR_SPACE(NODE) \
1635 ((int) ((TYPE_READONLY (NODE) * TYPE_QUAL_CONST) \
1636 | (TYPE_VOLATILE (NODE) * TYPE_QUAL_VOLATILE) \
1637 | (TYPE_RESTRICT (NODE) * TYPE_QUAL_RESTRICT)))
1640 #define TYPE_LANG_FLAG_0(NODE) (TYPE_CHECK (NODE)->type_common.lang_flag_0)
1641 #define TYPE_LANG_FLAG_1(NODE) (TYPE_CHECK (NODE)->type_common.lang_flag_1)
1642 #define TYPE_LANG_FLAG_2(NODE) (TYPE_CHECK (NODE)->type_common.lang_flag_2)
1643 #define TYPE_LANG_FLAG_3(NODE) (TYPE_CHECK (NODE)->type_common.lang_flag_3)
1644 #define TYPE_LANG_FLAG_4(NODE) (TYPE_CHECK (NODE)->type_common.lang_flag_4)
1645 #define TYPE_LANG_FLAG_5(NODE) (TYPE_CHECK (NODE)->type_common.lang_flag_5)
1646 #define TYPE_LANG_FLAG_6(NODE) (TYPE_CHECK (NODE)->type_common.lang_flag_6)
1650 #define TREE_VISITED(NODE) ((NODE)->base.visited)
1655 #define TYPE_STRING_FLAG(NODE) (TYPE_CHECK (NODE)->type_common.string_flag)
1658 #define TYPE_VECTOR_SUBPARTS(VECTOR_TYPE) \
1659 (((unsigned HOST_WIDE_INT) 1) \
1660 << VECTOR_TYPE_CHECK (VECTOR_TYPE)->type_common.precision)
1663 #define SET_TYPE_VECTOR_SUBPARTS(VECTOR_TYPE, X) \
1664 (VECTOR_TYPE_CHECK (VECTOR_TYPE)->type_common.precision = exact_log2 (X))
1668 #define TYPE_VECTOR_OPAQUE(NODE) \
1669 (VECTOR_TYPE_CHECK (NODE)->base.default_def_flag)
1673 #define TYPE_NEEDS_CONSTRUCTING(NODE) \
1674 (TYPE_CHECK (NODE)->type_common.needs_constructing_flag)
1680 #define TYPE_TRANSPARENT_AGGR(NODE) \
1681 (RECORD_OR_UNION_CHECK (NODE)->type_common.transparent_aggr_flag)
1686 #define TYPE_NONALIASED_COMPONENT(NODE) \
1687 (ARRAY_TYPE_CHECK (NODE)->type_common.transparent_aggr_flag)
1691 #define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->base.u.bits.packed_flag)
1696 #define TYPE_CONTAINS_PLACEHOLDER_INTERNAL(NODE) \
1697 (TYPE_CHECK (NODE)->type_common.contains_placeholder_bits)
1700 #define TYPE_FINAL_P(NODE) \
1701 (RECORD_OR_UNION_CHECK (NODE)->base.default_def_flag)
1712 #define TYPE_SYMTAB_ADDRESS(NODE) \
1713 (TYPE_CHECK (NODE)->type_common.symtab.address)
1717 #define TYPE_SYMTAB_POINTER(NODE) \
1718 (TYPE_CHECK (NODE)->type_common.symtab.pointer)
1722 #define TYPE_SYMTAB_DIE(NODE) \
1723 (TYPE_CHECK (NODE)->type_common.symtab.die)
1729 #define TYPE_SYMTAB_IS_ADDRESS (0)
1730 #define TYPE_SYMTAB_IS_POINTER (1)
1731 #define TYPE_SYMTAB_IS_DIE (2)
1733 #define TYPE_LANG_SPECIFIC(NODE) \
1734 (TYPE_CHECK (NODE)->type_with_lang_specific.lang_specific)
1736 #define TYPE_VALUES(NODE) (ENUMERAL_TYPE_CHECK (NODE)->type_non_common.values)
1737 #define TYPE_DOMAIN(NODE) (ARRAY_TYPE_CHECK (NODE)->type_non_common.values)
1738 #define TYPE_FIELDS(NODE) \
1739 (RECORD_OR_UNION_CHECK (NODE)->type_non_common.values)
1740 #define TYPE_CACHED_VALUES(NODE) (TYPE_CHECK (NODE)->type_non_common.values)
1741 #define TYPE_ARG_TYPES(NODE) \
1742 (FUNC_OR_METHOD_CHECK (NODE)->type_non_common.values)
1743 #define TYPE_VALUES_RAW(NODE) (TYPE_CHECK (NODE)->type_non_common.values)
1745 #define TYPE_METHODS(NODE) \
1746 (RECORD_OR_UNION_CHECK (NODE)->type_non_common.maxval)
1747 #define TYPE_VFIELD(NODE) \
1748 (RECORD_OR_UNION_CHECK (NODE)->type_non_common.minval)
1749 #define TYPE_METHOD_BASETYPE(NODE) \
1750 (FUNC_OR_METHOD_CHECK (NODE)->type_non_common.maxval)
1751 #define TYPE_OFFSET_BASETYPE(NODE) \
1752 (OFFSET_TYPE_CHECK (NODE)->type_non_common.maxval)
1753 #define TYPE_MAXVAL(NODE) (TYPE_CHECK (NODE)->type_non_common.maxval)
1754 #define TYPE_MINVAL(NODE) (TYPE_CHECK (NODE)->type_non_common.minval)
1755 #define TYPE_NEXT_PTR_TO(NODE) \
1756 (POINTER_TYPE_CHECK (NODE)->type_non_common.minval)
1757 #define TYPE_NEXT_REF_TO(NODE) \
1758 (REFERENCE_TYPE_CHECK (NODE)->type_non_common.minval)
1759 #define TYPE_MIN_VALUE(NODE) \
1760 (NUMERICAL_TYPE_CHECK (NODE)->type_non_common.minval)
1761 #define TYPE_MAX_VALUE(NODE) \
1762 (NUMERICAL_TYPE_CHECK (NODE)->type_non_common.maxval)
1767 #define TYPE_ARRAY_MAX_SIZE(ARRAY_TYPE) \
1768 (ARRAY_TYPE_CHECK (ARRAY_TYPE)->type_non_common.maxval)
1772 #define TYPE_BINFO(NODE) (RECORD_OR_UNION_CHECK (NODE)->type_non_common.binfo)
1775 #define TYPE_LANG_SLOT_1(NODE) \
1776 (NOT_RECORD_OR_UNION_CHECK (NODE)->type_non_common.binfo)
1796 #define BINFO_VIRTUAL_P(NODE) (TREE_BINFO_CHECK (NODE)->base.static_flag)
1799 #define BINFO_MARKED(NODE) TREE_LANG_FLAG_0 (TREE_BINFO_CHECK (NODE))
1800 #define BINFO_FLAG_1(NODE) TREE_LANG_FLAG_1 (TREE_BINFO_CHECK (NODE))
1801 #define BINFO_FLAG_2(NODE) TREE_LANG_FLAG_2 (TREE_BINFO_CHECK (NODE))
1802 #define BINFO_FLAG_3(NODE) TREE_LANG_FLAG_3 (TREE_BINFO_CHECK (NODE))
1803 #define BINFO_FLAG_4(NODE) TREE_LANG_FLAG_4 (TREE_BINFO_CHECK (NODE))
1804 #define BINFO_FLAG_5(NODE) TREE_LANG_FLAG_5 (TREE_BINFO_CHECK (NODE))
1805 #define BINFO_FLAG_6(NODE) TREE_LANG_FLAG_6 (TREE_BINFO_CHECK (NODE))
1808 #define BINFO_TYPE(NODE) TREE_TYPE (TREE_BINFO_CHECK (NODE))
1816 #define BINFO_OFFSET(NODE) (TREE_BINFO_CHECK (NODE)->binfo.offset)
1817 #define BINFO_OFFSET_ZEROP(NODE) (integer_zerop (BINFO_OFFSET (NODE)))
1823 #define BINFO_VTABLE(NODE) (TREE_BINFO_CHECK (NODE)->binfo.vtable)
1828 #define BINFO_VIRTUALS(NODE) (TREE_BINFO_CHECK (NODE)->binfo.virtuals)
1836 #define BINFO_BASE_BINFOS(NODE) (&TREE_BINFO_CHECK (NODE)->binfo.base_binfos)
1839 #define BINFO_N_BASE_BINFOS(NODE) (BINFO_BASE_BINFOS (NODE)->length ())
1842 #define BINFO_BASE_BINFO(NODE,N) \
1843 ((*BINFO_BASE_BINFOS (NODE))[(N)])
1844 #define BINFO_BASE_ITERATE(NODE,N,B) \
1845 (BINFO_BASE_BINFOS (NODE)->iterate ((N), &(B)))
1846 #define BINFO_BASE_APPEND(NODE,T) \
1847 (BINFO_BASE_BINFOS (NODE)->quick_push ((T)))
1854 #define BINFO_VPTR_FIELD(NODE) (TREE_BINFO_CHECK (NODE)->binfo.vptr_field)
1859 #define BINFO_BASE_ACCESSES(NODE) \
1860 (TREE_BINFO_CHECK (NODE)->binfo.base_accesses)
1862 #define BINFO_BASE_ACCESS(NODE,N) \
1863 (*BINFO_BASE_ACCESSES (NODE))[(N)]
1864 #define BINFO_BASE_ACCESS_APPEND(NODE,T) \
1865 BINFO_BASE_ACCESSES (NODE)->quick_push ((T))
1869 #define BINFO_SUBVTT_INDEX(NODE) (TREE_BINFO_CHECK (NODE)->binfo.vtt_subvtt)
1873 #define BINFO_VPTR_INDEX(NODE) (TREE_BINFO_CHECK (NODE)->binfo.vtt_vptr)
1879 #define BINFO_INHERITANCE_CHAIN(NODE) \
1880 (TREE_BINFO_CHECK (NODE)->binfo.inheritance)
1887 #define SSA_VAR_P(DECL) \
1888 (TREE_CODE (DECL) == VAR_DECL \
1889 || TREE_CODE (DECL) == PARM_DECL \
1890 || TREE_CODE (DECL) == RESULT_DECL \
1891 || TREE_CODE (DECL) == SSA_NAME)
1894 #define DECL_CHAIN(NODE) (TREE_CHAIN (DECL_MINIMAL_CHECK (NODE)))
1898 #define DECL_NAME(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.name)
1901 #define DECL_UID(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.uid)
1905 #define DEBUG_TEMP_UID(NODE) (-DECL_UID (TREE_CHECK ((NODE), DEBUG_EXPR_DECL)))
1909 #define DECL_PT_UID(NODE) \
1910 (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid == -1u \
1911 ? (NODE)->decl_minimal.uid : (NODE)->decl_common.pt_uid)
1913 #define SET_DECL_PT_UID(NODE, UID) \
1914 (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid = (UID))
1917 #define DECL_PT_UID_SET_P(NODE) \
1918 (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid != -1u)
1924 #define DECL_SOURCE_LOCATION(NODE) \
1925 (DECL_MINIMAL_CHECK (NODE)->decl_minimal.locus)
1926 #define DECL_SOURCE_FILE(NODE) LOCATION_FILE (DECL_SOURCE_LOCATION (NODE))
1927 #define DECL_SOURCE_LINE(NODE) LOCATION_LINE (DECL_SOURCE_LOCATION (NODE))
1928 #define DECL_SOURCE_COLUMN(NODE) LOCATION_COLUMN (DECL_SOURCE_LOCATION (NODE))
1932 #define DECL_IS_BUILTIN(DECL) \
1933 (LOCATION_LOCUS (DECL_SOURCE_LOCATION (DECL)) <= BUILTINS_LOCATION)
1944 #define DECL_CONTEXT(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.context)
1945 #define DECL_FIELD_CONTEXT(NODE) \
1946 (FIELD_DECL_CHECK (NODE)->decl_minimal.context)
1949 #define DECL_NAMELESS(NODE) (DECL_MINIMAL_CHECK (NODE)->base.u.bits.nameless_flag)
1957 #define DECL_ABSTRACT_ORIGIN(NODE) \
1958 (DECL_COMMON_CHECK (NODE)->decl_common.abstract_origin)
1962 #define DECL_ORIGIN(NODE) \
1963 (DECL_ABSTRACT_ORIGIN (NODE) ? DECL_ABSTRACT_ORIGIN (NODE) : (NODE))
1969 #define DECL_FROM_INLINE(NODE) \
1970 (DECL_ABSTRACT_ORIGIN (NODE) != NULL_TREE \
1971 && DECL_ABSTRACT_ORIGIN (NODE) != (NODE))
1974 #define DECL_ATTRIBUTES(NODE) \
1975 (DECL_COMMON_CHECK (NODE)->decl_common.attributes)
1987 #define DECL_INITIAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.initial)
1991 #define DECL_SIZE(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.size)
1993 #define DECL_SIZE_UNIT(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.size_unit)
1995 #define DECL_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.align)
1997 #define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT)
2000 #define DECL_USER_ALIGN(NODE) \
2001 (DECL_COMMON_CHECK (NODE)->base.u.bits.user_align)
2005 #define DECL_MODE(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.mode)
2011 #define DECL_FUNCTION_CODE(NODE) \
2012 (FUNCTION_DECL_CHECK (NODE)->function_decl.function_code)
2014 #define DECL_FUNCTION_PERSONALITY(NODE) \
2015 (FUNCTION_DECL_CHECK (NODE)->function_decl.personality)
2021 #define DECL_IGNORED_P(NODE) \
2022 (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag)
2030 #define DECL_ABSTRACT(NODE) \
2031 (DECL_COMMON_CHECK (NODE)->decl_common.abstract_flag)
2034 #define DECL_LANG_SPECIFIC(NODE) \
2035 (DECL_COMMON_CHECK (NODE)->decl_common.lang_specific)
2044 #define DECL_EXTERNAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.decl_flag_1)
2053 #define DECL_NONLOCAL(NODE) \
2054 (DECL_COMMON_CHECK (NODE)->decl_common.nonlocal_flag)
2059 #define DECL_VIRTUAL_P(NODE) \
2060 (DECL_COMMON_CHECK (NODE)->decl_common.virtual_flag)
2063 #define DECL_ARTIFICIAL(NODE) \
2064 (DECL_COMMON_CHECK (NODE)->decl_common.artificial_flag)
2067 #define DECL_LANG_FLAG_0(NODE) \
2068 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_0)
2069 #define DECL_LANG_FLAG_1(NODE) \
2070 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_1)
2071 #define DECL_LANG_FLAG_2(NODE) \
2072 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_2)
2073 #define DECL_LANG_FLAG_3(NODE) \
2074 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_3)
2075 #define DECL_LANG_FLAG_4(NODE) \
2076 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_4)
2077 #define DECL_LANG_FLAG_5(NODE) \
2078 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_5)
2079 #define DECL_LANG_FLAG_6(NODE) \
2080 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_6)
2081 #define DECL_LANG_FLAG_7(NODE) \
2082 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_7)
2083 #define DECL_LANG_FLAG_8(NODE) \
2084 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_8)
2087 #define SCOPE_FILE_SCOPE_P(EXP) \
2088 (! (EXP) || TREE_CODE (EXP) == TRANSLATION_UNIT_DECL)
2090 #define DECL_FILE_SCOPE_P(EXP) SCOPE_FILE_SCOPE_P (DECL_CONTEXT (EXP))
2092 #define TYPE_FILE_SCOPE_P(EXP) SCOPE_FILE_SCOPE_P (TYPE_CONTEXT (EXP))
2096 #define DECL_PRESERVE_P(DECL) \
2097 DECL_COMMON_CHECK (DECL)->decl_common.preserve_flag
2105 #define DECL_GIMPLE_REG_P(DECL) \
2106 DECL_COMMON_CHECK (DECL)->decl_common.gimple_reg_flag
2115 #define DECL_HAS_VALUE_EXPR_P(NODE) \
2116 (TREE_CHECK3 (NODE, VAR_DECL, PARM_DECL, RESULT_DECL) \
2117 ->decl_common.decl_flag_2)
2118 #define DECL_VALUE_EXPR(NODE) \
2119 (decl_value_expr_lookup (DECL_WRTL_CHECK (NODE)))
2120 #define SET_DECL_VALUE_EXPR(NODE, VAL) \
2121 (decl_value_expr_insert (DECL_WRTL_CHECK (NODE), VAL))
2126 #define DECL_RTL(NODE) \
2127 (DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl \
2128 ? (NODE)->decl_with_rtl.rtl \
2129 : (make_decl_rtl (NODE), (NODE)->decl_with_rtl.rtl))
2132 #define SET_DECL_RTL(NODE, RTL) set_decl_rtl (NODE, RTL)
2135 #define HAS_RTL_P(NODE) (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WRTL))
2138 #define DECL_RTL_SET_P(NODE) \
2139 (HAS_RTL_P (NODE) && DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl != NULL)
2143 #define COPY_DECL_RTL(NODE1, NODE2) \
2144 (DECL_WRTL_CHECK (NODE2)->decl_with_rtl.rtl \
2145 = DECL_WRTL_CHECK (NODE1)->decl_with_rtl.rtl)
2148 #define DECL_RTL_IF_SET(NODE) (DECL_RTL_SET_P (NODE) ? DECL_RTL (NODE) : NULL)
2150 #if (GCC_VERSION >= 2007)
2151 #define DECL_RTL_KNOWN_SET(decl) __extension__ \
2152 ({ tree const __d = (decl); \
2153 gcc_checking_assert (DECL_RTL_SET_P (__d)); \
2156 &*DECL_RTL_IF_SET (__d); })
2158 #define DECL_RTL_KNOWN_SET(decl) (&*DECL_RTL_IF_SET (decl))
2162 #define DECL_REGISTER(NODE) (DECL_WRTL_CHECK (NODE)->decl_common.decl_flag_0)
2167 #define DECL_FIELD_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.offset)
2173 #define DECL_FIELD_BIT_OFFSET(NODE) \
2174 (FIELD_DECL_CHECK (NODE)->field_decl.bit_offset)
2179 #define DECL_BIT_FIELD_TYPE(NODE) \
2180 (FIELD_DECL_CHECK (NODE)->field_decl.bit_field_type)
2184 #define DECL_BIT_FIELD_REPRESENTATIVE(NODE) \
2185 (FIELD_DECL_CHECK (NODE)->field_decl.qualifier)
2189 #define DECL_QUALIFIER(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.qualifier)
2195 #define DECL_OFFSET_ALIGN(NODE) \
2196 (((unsigned HOST_WIDE_INT)1) << FIELD_DECL_CHECK (NODE)->decl_common.off_align)
2199 #define SET_DECL_OFFSET_ALIGN(NODE, X) \
2200 (FIELD_DECL_CHECK (NODE)->decl_common.off_align = ffs_hwi (X) - 1)
2205 #define DECL_FCONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.fcontext)
2208 #define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->base.u.bits.packed_flag)
2212 #define DECL_BIT_FIELD(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_1)
2229 #define DECL_NONADDRESSABLE_P(NODE) \
2230 (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_2)
2235 #define LABEL_DECL_UID(NODE) \
2236 (LABEL_DECL_CHECK (NODE)->label_decl.label_decl_uid)
2240 #define EH_LANDING_PAD_NR(NODE) \
2241 (LABEL_DECL_CHECK (NODE)->label_decl.eh_landing_pad_nr)
2245 #define DECL_ARG_TYPE(NODE) (PARM_DECL_CHECK (NODE)->decl_common.initial)
2249 #define DECL_INCOMING_RTL(NODE) \
2250 (PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl)
2254 #define DECL_IN_SYSTEM_HEADER(NODE) \
2255 (in_system_header_at (DECL_SOURCE_LOCATION (NODE)))
2259 #define DECL_DEFER_OUTPUT(NODE) \
2260 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.defer_output)
2264 #define DECL_IN_TEXT_SECTION(NODE) \
2265 (VAR_DECL_CHECK (NODE)->decl_with_vis.in_text_section)
2269 #define DECL_IN_CONSTANT_POOL(NODE) \
2270 (VAR_DECL_CHECK (NODE)->decl_with_vis.in_constant_pool)
2275 #define DECL_COMMON(NODE) \
2276 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.common_flag)
2280 #define DECL_HARD_REGISTER(NODE) \
2281 (VAR_DECL_CHECK (NODE)->decl_with_vis.hard_register)
2284 #define DECL_WEAK(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.weak_flag)
2287 #define DECL_DLLIMPORT_P(NODE) \
2288 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.dllimport_flag)
2299 #define DECL_COMDAT(NODE) \
2300 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_flag)
2302 #define DECL_COMDAT_GROUP(NODE) \
2303 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_group)
2307 #define DECL_ONE_ONLY(NODE) (DECL_COMDAT_GROUP (NODE) != NULL_TREE)
2312 #define DECL_ASSEMBLER_NAME(NODE) decl_assembler_name (NODE)
2316 #define HAS_DECL_ASSEMBLER_NAME_P(NODE) \
2317 (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WITH_VIS))
2322 #define DECL_ASSEMBLER_NAME_SET_P(NODE) \
2323 (HAS_DECL_ASSEMBLER_NAME_P (NODE) \
2324 && DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name != NULL_TREE)
2327 #define SET_DECL_ASSEMBLER_NAME(NODE, NAME) \
2328 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name = (NAME))
2339 #define COPY_DECL_ASSEMBLER_NAME(DECL1, DECL2) \
2340 (DECL_ASSEMBLER_NAME_SET_P (DECL1) \
2341 ? (void) SET_DECL_ASSEMBLER_NAME (DECL2, \
2342 DECL_ASSEMBLER_NAME (DECL1)) \
2347 #define DECL_SECTION_NAME(NODE) \
2348 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.section_name)
2352 #define DECL_SEEN_IN_BIND_EXPR_P(NODE) \
2353 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.seen_in_bind_expr)
2356 #define DECL_VISIBILITY(NODE) \
2357 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility)
2361 #define DECL_VISIBILITY_SPECIFIED(NODE) \
2362 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility_specified)
2366 #define DECL_TLS_MODEL(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model)
2370 #define DECL_THREAD_LOCAL_P(NODE) \
2371 (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model >= TLS_MODEL_REAL)
2376 #define DECL_HAS_INIT_PRIORITY_P(NODE) \
2377 (VAR_DECL_CHECK (NODE)->decl_with_vis.init_priority_p)
2381 #define DECL_HAS_IMPLICIT_SECTION_NAME_P(NODE) \
2382 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.implicit_section_name_p)
2388 #define DECL_HAS_DEBUG_EXPR_P(NODE) \
2389 (VAR_DECL_CHECK (NODE)->decl_common.debug_expr_is_from)
2390 #define DECL_DEBUG_EXPR(NODE) \
2391 (decl_debug_expr_lookup (VAR_DECL_CHECK (NODE)))
2393 #define SET_DECL_DEBUG_EXPR(NODE, VAL) \
2394 (decl_debug_expr_insert (VAR_DECL_CHECK (NODE), VAL))
2403 #define DECL_INIT_PRIORITY(NODE) \
2404 (decl_init_priority_lookup (NODE))
2406 #define SET_DECL_INIT_PRIORITY(NODE, VAL) \
2407 (decl_init_priority_insert (NODE, VAL))
2410 #define DECL_FINI_PRIORITY(NODE) \
2411 (decl_fini_priority_lookup (NODE))
2413 #define SET_DECL_FINI_PRIORITY(NODE, VAL) \
2414 (decl_fini_priority_insert (NODE, VAL))
2418 #define DEFAULT_INIT_PRIORITY 65535
2421 #define MAX_INIT_PRIORITY 65535
2425 #define MAX_RESERVED_INIT_PRIORITY 100
2428 #define VAR_DECL_IS_VIRTUAL_OPERAND(NODE) \
2429 (VAR_DECL_CHECK (NODE)->base.u.bits.saturating_flag)
2432 #define DECL_NONLOCAL_FRAME(NODE) \
2433 (VAR_DECL_CHECK (NODE)->base.default_def_flag)
2437 #define DECL_RESULT_FLD(NODE) \
2438 (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.result)
2448 #define DECL_VINDEX(NODE) \
2449 (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.vindex)
2452 #define DECL_RESULT(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.result)
2455 #define DECL_UNINLINABLE(NODE) \
2456 (FUNCTION_DECL_CHECK (NODE)->function_decl.uninlinable)
2460 #define DECL_SAVED_TREE(NODE) \
2461 (FUNCTION_DECL_CHECK (NODE)->decl_non_common.saved_tree)
2466 #define DECL_IS_MALLOC(NODE) \
2467 (FUNCTION_DECL_CHECK (NODE)->function_decl.malloc_flag)
2472 #define DECL_IS_OPERATOR_NEW(NODE) \
2473 (FUNCTION_DECL_CHECK (NODE)->function_decl.operator_new_flag)
2477 #define DECL_IS_RETURNS_TWICE(NODE) \
2478 (FUNCTION_DECL_CHECK (NODE)->function_decl.returns_twice_flag)
2482 #define DECL_PURE_P(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.pure_flag)
2490 #define DECL_LOOPING_CONST_OR_PURE_P(NODE) \
2491 (FUNCTION_DECL_CHECK (NODE)->function_decl.looping_const_or_pure_flag)
2496 #define DECL_IS_NOVOPS(NODE) \
2497 (FUNCTION_DECL_CHECK (NODE)->function_decl.novops_flag)
2501 #define DECL_STATIC_CONSTRUCTOR(NODE) \
2502 (FUNCTION_DECL_CHECK (NODE)->function_decl.static_ctor_flag)
2504 #define DECL_STATIC_DESTRUCTOR(NODE) \
2505 (FUNCTION_DECL_CHECK (NODE)->function_decl.static_dtor_flag)
2509 #define DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(NODE) \
2510 (FUNCTION_DECL_CHECK (NODE)->function_decl.no_instrument_function_entry_exit)
2514 #define DECL_NO_LIMIT_STACK(NODE) \
2515 (FUNCTION_DECL_CHECK (NODE)->function_decl.no_limit_stack)
2518 #define DECL_STATIC_CHAIN(NODE) \
2519 (FUNCTION_DECL_CHECK (NODE)->function_decl.regdecl_flag)
2524 #define DECL_POSSIBLY_INLINED(DECL) \
2525 FUNCTION_DECL_CHECK (DECL)->function_decl.possibly_inlined
2530 #define DECL_DECLARED_INLINE_P(NODE) \
2531 (FUNCTION_DECL_CHECK (NODE)->function_decl.declared_inline_flag)
2535 #define DECL_NO_INLINE_WARNING_P(NODE) \
2536 (FUNCTION_DECL_CHECK (NODE)->function_decl.no_inline_warning_flag)
2539 #define BUILTIN_TM_LOAD_STORE_P(FN) \
2540 ((FN) >= BUILT_IN_TM_STORE_1 && (FN) <= BUILT_IN_TM_LOAD_RFW_LDOUBLE)
2543 #define BUILTIN_TM_LOAD_P(FN) \
2544 ((FN) >= BUILT_IN_TM_LOAD_1 && (FN) <= BUILT_IN_TM_LOAD_RFW_LDOUBLE)
2547 #define BUILTIN_TM_STORE_P(FN) \
2548 ((FN) >= BUILT_IN_TM_STORE_1 && (FN) <= BUILT_IN_TM_STORE_WAW_LDOUBLE)
2550 #define CASE_BUILT_IN_TM_LOAD(FN) \
2551 case BUILT_IN_TM_LOAD_##FN: \
2552 case BUILT_IN_TM_LOAD_RAR_##FN: \
2553 case BUILT_IN_TM_LOAD_RAW_##FN: \
2554 case BUILT_IN_TM_LOAD_RFW_##FN
2556 #define CASE_BUILT_IN_TM_STORE(FN) \
2557 case BUILT_IN_TM_STORE_##FN: \
2558 case BUILT_IN_TM_STORE_WAR_##FN: \
2559 case BUILT_IN_TM_STORE_WAW_##FN
2565 #define DECL_DISREGARD_INLINE_LIMITS(NODE) \
2566 (FUNCTION_DECL_CHECK (NODE)->function_decl.disregard_inline_limits)
2572 #define DECL_HAS_DEBUG_ARGS_P(NODE) \
2573 (FUNCTION_DECL_CHECK (NODE)->function_decl.has_debug_args_flag)
2577 #define DECL_STRUCT_FUNCTION(NODE) \
2578 (FUNCTION_DECL_CHECK (NODE)->function_decl.f)
2587 #define DECL_BUILT_IN(NODE) (DECL_BUILT_IN_CLASS (NODE) != NOT_BUILT_IN)
2590 #define DECL_BUILT_IN_CLASS(NODE) \
2591 (FUNCTION_DECL_CHECK (NODE)->function_decl.built_in_class)
2596 #define DECL_ARGUMENTS(NODE) \
2597 (FUNCTION_DECL_CHECK (NODE)->decl_non_common.arguments)
2598 #define DECL_ARGUMENT_FLD(NODE) \
2599 (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.arguments)
2603 #define DECL_FUNCTION_SPECIFIC_TARGET(NODE) \
2604 (FUNCTION_DECL_CHECK (NODE)->function_decl.function_specific_target)
2608 #define DECL_FUNCTION_SPECIFIC_OPTIMIZATION(NODE) \
2609 (FUNCTION_DECL_CHECK (NODE)->function_decl.function_specific_optimization)
2614 #define DECL_FUNCTION_VERSIONED(NODE)\
2615 (FUNCTION_DECL_CHECK (NODE)->function_decl.versioned_function)
2621 #define DECL_CXX_CONSTRUCTOR_P(NODE)\
2622 (FUNCTION_DECL_CHECK (NODE)->decl_with_vis.cxx_constructor)
2626 #define DECL_CXX_DESTRUCTOR_P(NODE)\
2627 (FUNCTION_DECL_CHECK (NODE)->decl_with_vis.cxx_destructor)
2631 #define DECL_FINAL_P(NODE)\
2632 (FUNCTION_DECL_CHECK (NODE)->decl_with_vis.final)
2635 #define TRANSLATION_UNIT_LANGUAGE(NODE) \
2636 (TRANSLATION_UNIT_DECL_CHECK (NODE)->translation_unit_decl.language)
2641 #define DECL_ORIGINAL_TYPE(NODE) \
2642 (TYPE_DECL_CHECK (NODE)->decl_non_common.result)
2647 #define TYPE_DECL_SUPPRESS_DEBUG(NODE) \
2648 (TYPE_DECL_CHECK (NODE)->decl_common.decl_flag_1)
2652 #define IMPORTED_DECL_ASSOCIATED_DECL(NODE) \
2653 (DECL_INITIAL (IMPORTED_DECL_CHECK (NODE)))
2661 #define STATEMENT_LIST_HEAD(NODE) \
2662 (STATEMENT_LIST_CHECK (NODE)->stmt_list.head)
2663 #define STATEMENT_LIST_TAIL(NODE) \
2664 (STATEMENT_LIST_CHECK (NODE)->stmt_list.tail)
2666 #define TREE_OPTIMIZATION(NODE) \
2667 (&OPTIMIZATION_NODE_CHECK (NODE)->optimization.opts)
2669 #define TREE_OPTIMIZATION_OPTABS(NODE) \
2670 (OPTIMIZATION_NODE_CHECK (NODE)->optimization.optabs)
2672 #define TREE_OPTIMIZATION_BASE_OPTABS(NODE) \
2673 (OPTIMIZATION_NODE_CHECK (NODE)->optimization.base_optabs)
2680 #define TREE_TARGET_OPTION(NODE) \
2681 (&TARGET_OPTION_NODE_CHECK (NODE)->target_option.opts)
2686 #if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
2689 tree_check (
tree __t,
const char *__f,
int __l,
const char *__g, tree_code __c)
2691 if (TREE_CODE (__t) != __c)
2700 if (TREE_CODE (__t) == __c)
2707 enum tree_code __c1,
enum tree_code __c2)
2709 if (TREE_CODE (__t) != __c1
2710 && TREE_CODE (__t) != __c2)
2717 enum tree_code __c1,
enum tree_code __c2)
2719 if (TREE_CODE (__t) == __c1
2720 || TREE_CODE (__t) == __c2)
2727 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3)
2729 if (TREE_CODE (__t) != __c1
2730 && TREE_CODE (__t) != __c2
2731 && TREE_CODE (__t) != __c3)
2738 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3)
2740 if (TREE_CODE (__t) == __c1
2741 || TREE_CODE (__t) == __c2
2742 || TREE_CODE (__t) == __c3)
2749 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3,
2750 enum tree_code __c4)
2752 if (TREE_CODE (__t) != __c1
2753 && TREE_CODE (__t) != __c2
2754 && TREE_CODE (__t) != __c3
2755 && TREE_CODE (__t) != __c4)
2762 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3,
2763 enum tree_code __c4)
2765 if (TREE_CODE (__t) == __c1
2766 || TREE_CODE (__t) == __c2
2767 || TREE_CODE (__t) == __c3
2768 || TREE_CODE (__t) == __c4)
2775 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3,
2776 enum tree_code __c4,
enum tree_code __c5)
2778 if (TREE_CODE (__t) != __c1
2779 && TREE_CODE (__t) != __c2
2780 && TREE_CODE (__t) != __c3
2781 && TREE_CODE (__t) != __c4
2782 && TREE_CODE (__t) != __c5)
2789 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3,
2790 enum tree_code __c4,
enum tree_code __c5)
2792 if (TREE_CODE (__t) == __c1
2793 || TREE_CODE (__t) == __c2
2794 || TREE_CODE (__t) == __c3
2795 || TREE_CODE (__t) == __c4
2796 || TREE_CODE (__t) == __c5)
2803 const char *__f,
int __l,
const char *__g)
2812 const char *__f,
int __l,
const char *__g)
2814 if (TREE_CODE_CLASS (TREE_CODE (__t)) != __class)
2821 enum tree_code __code1,
enum tree_code __code2,
2822 const char *__f,
int __l,
const char *__g)
2824 if (TREE_CODE (__t) < __code1 || TREE_CODE (__t) > __code2)
2831 const char *__f,
int __l,
const char *__g)
2833 if (TREE_CODE (__t) != OMP_CLAUSE)
2835 if (__t->omp_clause.code != __code)
2842 enum omp_clause_code __code1,
2843 enum omp_clause_code __code2,
2844 const char *__f,
int __l,
const char *__g)
2846 if (TREE_CODE (__t) != OMP_CLAUSE)
2848 if ((
int) __t->omp_clause.code < (
int) __code1
2849 || (
int) __t->omp_clause.code > (
int) __code2)
2859 char const __c = TREE_CODE_CLASS (TREE_CODE (__t));
2860 if (!IS_EXPR_CODE_CLASS (__c))
2877 const char *__f,
int __l,
const char *__g)
2879 if (TREE_CODE (__t) != TREE_VEC)
2881 if (__i < 0 || __i >= __t->base.u.length)
2883 return &CONST_CAST_TREE (__t)->vec.a[__i];
2888 const char *__f,
int __l,
const char *__g)
2890 if (TREE_CODE (__t) != OMP_CLAUSE)
2894 return &__t->omp_clause.ops[__i];
2898 tree_check (const_tree __t,
const char *__f,
int __l,
const char *__g,
2901 if (TREE_CODE (__t) != __c)
2907 tree_not_check (const_tree __t,
const char *__f,
int __l,
const char *__g,
2910 if (TREE_CODE (__t) == __c)
2916 tree_check2 (const_tree __t,
const char *__f,
int __l,
const char *__g,
2917 enum tree_code __c1,
enum tree_code __c2)
2919 if (TREE_CODE (__t) != __c1
2920 && TREE_CODE (__t) != __c2)
2926 tree_not_check2 (const_tree __t,
const char *__f,
int __l,
const char *__g,
2927 enum tree_code __c1,
enum tree_code __c2)
2929 if (TREE_CODE (__t) == __c1
2930 || TREE_CODE (__t) == __c2)
2936 tree_check3 (const_tree __t,
const char *__f,
int __l,
const char *__g,
2937 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3)
2939 if (TREE_CODE (__t) != __c1
2940 && TREE_CODE (__t) != __c2
2941 && TREE_CODE (__t) != __c3)
2947 tree_not_check3 (const_tree __t,
const char *__f,
int __l,
const char *__g,
2948 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3)
2950 if (TREE_CODE (__t) == __c1
2951 || TREE_CODE (__t) == __c2
2952 || TREE_CODE (__t) == __c3)
2958 tree_check4 (const_tree __t,
const char *__f,
int __l,
const char *__g,
2959 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3,
2960 enum tree_code __c4)
2962 if (TREE_CODE (__t) != __c1
2963 && TREE_CODE (__t) != __c2
2964 && TREE_CODE (__t) != __c3
2965 && TREE_CODE (__t) != __c4)
2971 tree_not_check4 (const_tree __t,
const char *__f,
int __l,
const char *__g,
2972 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3,
2973 enum tree_code __c4)
2975 if (TREE_CODE (__t) == __c1
2976 || TREE_CODE (__t) == __c2
2977 || TREE_CODE (__t) == __c3
2978 || TREE_CODE (__t) == __c4)
2984 tree_check5 (const_tree __t,
const char *__f,
int __l,
const char *__g,
2985 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3,
2986 enum tree_code __c4,
enum tree_code __c5)
2988 if (TREE_CODE (__t) != __c1
2989 && TREE_CODE (__t) != __c2
2990 && TREE_CODE (__t) != __c3
2991 && TREE_CODE (__t) != __c4
2992 && TREE_CODE (__t) != __c5)
2998 tree_not_check5 (const_tree __t,
const char *__f,
int __l,
const char *__g,
2999 enum tree_code __c1,
enum tree_code __c2,
enum tree_code __c3,
3000 enum tree_code __c4,
enum tree_code __c5)
3002 if (TREE_CODE (__t) == __c1
3003 || TREE_CODE (__t) == __c2
3004 || TREE_CODE (__t) == __c3
3005 || TREE_CODE (__t) == __c4
3006 || TREE_CODE (__t) == __c5)
3013 const char *__f,
int __l,
const char *__g)
3022 const char *__f,
int __l,
const char *__g)
3024 if (TREE_CODE_CLASS (TREE_CODE (__t)) != __class)
3031 enum tree_code __code1,
enum tree_code __code2,
3032 const char *__f,
int __l,
const char *__g)
3034 if (TREE_CODE (__t) < __code1 || TREE_CODE (__t) > __code2)
3041 const char *__f,
int __l,
const char *__g)
3043 if (TREE_CODE (__t) != OMP_CLAUSE)
3045 if (__t->omp_clause.code != __code)
3052 enum omp_clause_code __code1,
3053 enum omp_clause_code __code2,
3054 const char *__f,
int __l,
const char *__g)
3056 if (TREE_CODE (__t) != OMP_CLAUSE)
3058 if ((
int) __t->omp_clause.code < (
int) __code1
3059 || (
int) __t->omp_clause.code > (
int) __code2)
3065 expr_check (const_tree __t,
const char *__f,
int __l,
const char *__g)
3067 char const __c = TREE_CODE_CLASS (TREE_CODE (__t));
3068 if (!IS_EXPR_CODE_CLASS (__c))
3074 non_type_check (const_tree __t,
const char *__f,
int __l,
const char *__g)
3083 const char *__f,
int __l,
const char *__g)
3085 if (TREE_CODE (__t) != TREE_VEC)
3087 if (__i < 0 || __i >= __t->base.u.length)
3089 return CONST_CAST (const_tree *, &__t->vec.a[__i]);
3095 const char *__f,
int __l,
const char *__g)
3097 if (TREE_CODE (__t) != OMP_CLAUSE)
3101 return CONST_CAST (const_tree *, &__t->omp_clause.ops[__i]);
3112 if (VL_EXP_CLASS_P (node))
3113 return VL_EXP_OPERAND_LENGTH (node);
3115 return TREE_CODE_LENGTH (TREE_CODE (node));
3118 #if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007)
3123 const char *__f,
int __l,
const char *__g)
3125 const_tree __u = EXPR_CHECK (__t);
3126 if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__u))
3128 return &CONST_CAST_TREE (__u)->exp.operands[__i];
3133 const char *__f,
int __l,
const char *__g)
3135 if (TREE_CODE (__t) != __code)
3137 if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__t))
3139 return &__t->exp.operands[__i];
3144 const char *__f,
int __l,
const char *__g)
3146 const_tree __u = EXPR_CHECK (__t);
3147 if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__u))
3149 return CONST_CAST (const_tree *, &__u->exp.operands[__i]);
3154 const char *__f,
int __l,
const char *__g)
3156 if (TREE_CODE (__t) != __code)
3158 if (__i < 0 || __i >= TREE_OPERAND_LENGTH (__t))
3160 return CONST_CAST (const_tree *, &__t->exp.operands[__i]);
3165 #define error_mark_node global_trees[TI_ERROR_MARK]
3167 #define intQI_type_node global_trees[TI_INTQI_TYPE]
3168 #define intHI_type_node global_trees[TI_INTHI_TYPE]
3169 #define intSI_type_node global_trees[TI_INTSI_TYPE]
3170 #define intDI_type_node global_trees[TI_INTDI_TYPE]
3171 #define intTI_type_node global_trees[TI_INTTI_TYPE]
3173 #define unsigned_intQI_type_node global_trees[TI_UINTQI_TYPE]
3174 #define unsigned_intHI_type_node global_trees[TI_UINTHI_TYPE]
3175 #define unsigned_intSI_type_node global_trees[TI_UINTSI_TYPE]
3176 #define unsigned_intDI_type_node global_trees[TI_UINTDI_TYPE]
3177 #define unsigned_intTI_type_node global_trees[TI_UINTTI_TYPE]
3179 #define uint16_type_node global_trees[TI_UINT16_TYPE]
3180 #define uint32_type_node global_trees[TI_UINT32_TYPE]
3181 #define uint64_type_node global_trees[TI_UINT64_TYPE]
3183 #define integer_zero_node global_trees[TI_INTEGER_ZERO]
3184 #define integer_one_node global_trees[TI_INTEGER_ONE]
3185 #define integer_three_node global_trees[TI_INTEGER_THREE]
3186 #define integer_minus_one_node global_trees[TI_INTEGER_MINUS_ONE]
3187 #define size_zero_node global_trees[TI_SIZE_ZERO]
3188 #define size_one_node global_trees[TI_SIZE_ONE]
3189 #define bitsize_zero_node global_trees[TI_BITSIZE_ZERO]
3190 #define bitsize_one_node global_trees[TI_BITSIZE_ONE]
3191 #define bitsize_unit_node global_trees[TI_BITSIZE_UNIT]
3194 #define access_public_node global_trees[TI_PUBLIC]
3195 #define access_protected_node global_trees[TI_PROTECTED]
3196 #define access_private_node global_trees[TI_PRIVATE]
3198 #define null_pointer_node global_trees[TI_NULL_POINTER]
3200 #define float_type_node global_trees[TI_FLOAT_TYPE]
3201 #define double_type_node global_trees[TI_DOUBLE_TYPE]
3202 #define long_double_type_node global_trees[TI_LONG_DOUBLE_TYPE]
3204 #define float_ptr_type_node global_trees[TI_FLOAT_PTR_TYPE]
3205 #define double_ptr_type_node global_trees[TI_DOUBLE_PTR_TYPE]
3206 #define long_double_ptr_type_node global_trees[TI_LONG_DOUBLE_PTR_TYPE]
3207 #define integer_ptr_type_node global_trees[TI_INTEGER_PTR_TYPE]
3209 #define complex_integer_type_node global_trees[TI_COMPLEX_INTEGER_TYPE]
3210 #define complex_float_type_node global_trees[TI_COMPLEX_FLOAT_TYPE]
3211 #define complex_double_type_node global_trees[TI_COMPLEX_DOUBLE_TYPE]
3212 #define complex_long_double_type_node global_trees[TI_COMPLEX_LONG_DOUBLE_TYPE]
3214 #define pointer_bounds_type_node global_trees[TI_POINTER_BOUNDS_TYPE]
3216 #define void_type_node global_trees[TI_VOID_TYPE]
3218 #define ptr_type_node global_trees[TI_PTR_TYPE]
3220 #define const_ptr_type_node global_trees[TI_CONST_PTR_TYPE]
3222 #define size_type_node global_trees[TI_SIZE_TYPE]
3223 #define pid_type_node global_trees[TI_PID_TYPE]
3224 #define ptrdiff_type_node global_trees[TI_PTRDIFF_TYPE]
3225 #define va_list_type_node global_trees[TI_VA_LIST_TYPE]
3226 #define va_list_gpr_counter_field global_trees[TI_VA_LIST_GPR_COUNTER_FIELD]
3227 #define va_list_fpr_counter_field global_trees[TI_VA_LIST_FPR_COUNTER_FIELD]
3229 #define fileptr_type_node global_trees[TI_FILEPTR_TYPE]
3230 #define pointer_sized_int_node global_trees[TI_POINTER_SIZED_TYPE]
3232 #define boolean_type_node global_trees[TI_BOOLEAN_TYPE]
3233 #define boolean_false_node global_trees[TI_BOOLEAN_FALSE]
3234 #define boolean_true_node global_trees[TI_BOOLEAN_TRUE]
3237 #define dfloat32_type_node global_trees[TI_DFLOAT32_TYPE]
3238 #define dfloat64_type_node global_trees[TI_DFLOAT64_TYPE]
3239 #define dfloat128_type_node global_trees[TI_DFLOAT128_TYPE]
3240 #define dfloat32_ptr_type_node global_trees[TI_DFLOAT32_PTR_TYPE]
3241 #define dfloat64_ptr_type_node global_trees[TI_DFLOAT64_PTR_TYPE]
3242 #define dfloat128_ptr_type_node global_trees[TI_DFLOAT128_PTR_TYPE]
3245 #define sat_short_fract_type_node global_trees[TI_SAT_SFRACT_TYPE]
3246 #define sat_fract_type_node global_trees[TI_SAT_FRACT_TYPE]
3247 #define sat_long_fract_type_node global_trees[TI_SAT_LFRACT_TYPE]
3248 #define sat_long_long_fract_type_node global_trees[TI_SAT_LLFRACT_TYPE]
3249 #define sat_unsigned_short_fract_type_node \
3250 global_trees[TI_SAT_USFRACT_TYPE]
3251 #define sat_unsigned_fract_type_node global_trees[TI_SAT_UFRACT_TYPE]
3252 #define sat_unsigned_long_fract_type_node \
3253 global_trees[TI_SAT_ULFRACT_TYPE]
3254 #define sat_unsigned_long_long_fract_type_node \
3255 global_trees[TI_SAT_ULLFRACT_TYPE]
3256 #define short_fract_type_node global_trees[TI_SFRACT_TYPE]
3257 #define fract_type_node global_trees[TI_FRACT_TYPE]
3258 #define long_fract_type_node global_trees[TI_LFRACT_TYPE]
3259 #define long_long_fract_type_node global_trees[TI_LLFRACT_TYPE]
3260 #define unsigned_short_fract_type_node global_trees[TI_USFRACT_TYPE]
3261 #define unsigned_fract_type_node global_trees[TI_UFRACT_TYPE]
3262 #define unsigned_long_fract_type_node global_trees[TI_ULFRACT_TYPE]
3263 #define unsigned_long_long_fract_type_node \
3264 global_trees[TI_ULLFRACT_TYPE]
3265 #define sat_short_accum_type_node global_trees[TI_SAT_SACCUM_TYPE]
3266 #define sat_accum_type_node global_trees[TI_SAT_ACCUM_TYPE]
3267 #define sat_long_accum_type_node global_trees[TI_SAT_LACCUM_TYPE]
3268 #define sat_long_long_accum_type_node global_trees[TI_SAT_LLACCUM_TYPE]
3269 #define sat_unsigned_short_accum_type_node \
3270 global_trees[TI_SAT_USACCUM_TYPE]
3271 #define sat_unsigned_accum_type_node global_trees[TI_SAT_UACCUM_TYPE]
3272 #define sat_unsigned_long_accum_type_node \
3273 global_trees[TI_SAT_ULACCUM_TYPE]
3274 #define sat_unsigned_long_long_accum_type_node \
3275 global_trees[TI_SAT_ULLACCUM_TYPE]
3276 #define short_accum_type_node global_trees[TI_SACCUM_TYPE]
3277 #define accum_type_node global_trees[TI_ACCUM_TYPE]
3278 #define long_accum_type_node global_trees[TI_LACCUM_TYPE]
3279 #define long_long_accum_type_node global_trees[TI_LLACCUM_TYPE]
3280 #define unsigned_short_accum_type_node global_trees[TI_USACCUM_TYPE]
3281 #define unsigned_accum_type_node global_trees[TI_UACCUM_TYPE]
3282 #define unsigned_long_accum_type_node global_trees[TI_ULACCUM_TYPE]
3283 #define unsigned_long_long_accum_type_node \
3284 global_trees[TI_ULLACCUM_TYPE]
3285 #define qq_type_node global_trees[TI_QQ_TYPE]
3286 #define hq_type_node global_trees[TI_HQ_TYPE]
3287 #define sq_type_node global_trees[TI_SQ_TYPE]
3288 #define dq_type_node global_trees[TI_DQ_TYPE]
3289 #define tq_type_node global_trees[TI_TQ_TYPE]
3290 #define uqq_type_node global_trees[TI_UQQ_TYPE]
3291 #define uhq_type_node global_trees[TI_UHQ_TYPE]
3292 #define usq_type_node global_trees[TI_USQ_TYPE]
3293 #define udq_type_node global_trees[TI_UDQ_TYPE]
3294 #define utq_type_node global_trees[TI_UTQ_TYPE]
3295 #define sat_qq_type_node global_trees[TI_SAT_QQ_TYPE]
3296 #define sat_hq_type_node global_trees[TI_SAT_HQ_TYPE]
3297 #define sat_sq_type_node global_trees[TI_SAT_SQ_TYPE]
3298 #define sat_dq_type_node global_trees[TI_SAT_DQ_TYPE]
3299 #define sat_tq_type_node global_trees[TI_SAT_TQ_TYPE]
3300 #define sat_uqq_type_node global_trees[TI_SAT_UQQ_TYPE]
3301 #define sat_uhq_type_node global_trees[TI_SAT_UHQ_TYPE]
3302 #define sat_usq_type_node global_trees[TI_SAT_USQ_TYPE]
3303 #define sat_udq_type_node global_trees[TI_SAT_UDQ_TYPE]
3304 #define sat_utq_type_node global_trees[TI_SAT_UTQ_TYPE]
3305 #define ha_type_node global_trees[TI_HA_TYPE]
3306 #define sa_type_node global_trees[TI_SA_TYPE]
3307 #define da_type_node global_trees[TI_DA_TYPE]
3308 #define ta_type_node global_trees[TI_TA_TYPE]
3309 #define uha_type_node global_trees[TI_UHA_TYPE]
3310 #define usa_type_node global_trees[TI_USA_TYPE]
3311 #define uda_type_node global_trees[TI_UDA_TYPE]
3312 #define uta_type_node global_trees[TI_UTA_TYPE]
3313 #define sat_ha_type_node global_trees[TI_SAT_HA_TYPE]
3314 #define sat_sa_type_node global_trees[TI_SAT_SA_TYPE]
3315 #define sat_da_type_node global_trees[TI_SAT_DA_TYPE]
3316 #define sat_ta_type_node global_trees[TI_SAT_TA_TYPE]
3317 #define sat_uha_type_node global_trees[TI_SAT_UHA_TYPE]
3318 #define sat_usa_type_node global_trees[TI_SAT_USA_TYPE]
3319 #define sat_uda_type_node global_trees[TI_SAT_UDA_TYPE]
3320 #define sat_uta_type_node global_trees[TI_SAT_UTA_TYPE]
3327 #define void_list_node global_trees[TI_VOID_LIST_NODE]
3329 #define main_identifier_node global_trees[TI_MAIN_IDENTIFIER]
3330 #define MAIN_NAME_P(NODE) \
3331 (IDENTIFIER_NODE_CHECK (NODE) == main_identifier_node)
3335 #define optimization_default_node global_trees[TI_OPTIMIZATION_DEFAULT]
3336 #define optimization_current_node global_trees[TI_OPTIMIZATION_CURRENT]
3339 #define target_option_default_node global_trees[TI_TARGET_OPTION_DEFAULT]
3340 #define target_option_current_node global_trees[TI_TARGET_OPTION_CURRENT]
3344 #define current_target_pragma global_trees[TI_CURRENT_TARGET_PRAGMA]
3345 #define current_optimize_pragma global_trees[TI_CURRENT_OPTIMIZE_PRAGMA]
3347 #define char_type_node integer_types[itk_char]
3348 #define signed_char_type_node integer_types[itk_signed_char]
3349 #define unsigned_char_type_node integer_types[itk_unsigned_char]
3350 #define short_integer_type_node integer_types[itk_short]
3351 #define short_unsigned_type_node integer_types[itk_unsigned_short]
3352 #define integer_type_node integer_types[itk_int]
3353 #define unsigned_type_node integer_types[itk_unsigned_int]
3354 #define long_integer_type_node integer_types[itk_long]
3355 #define long_unsigned_type_node integer_types[itk_unsigned_long]
3356 #define long_long_integer_type_node integer_types[itk_long_long]
3357 #define long_long_unsigned_type_node integer_types[itk_unsigned_long_long]
3358 #define int128_integer_type_node integer_types[itk_int128]
3359 #define int128_unsigned_type_node integer_types[itk_unsigned_int128]
3361 #define NULL_TREE (tree) NULL
3365 #define error_operand_p(NODE) \
3366 ((NODE) == error_mark_node \
3367 || ((NODE) && TREE_TYPE ((NODE)) == error_mark_node))
3391 #define make_node(t) make_node_stat (t MEM_STAT_INFO)
3396 #define copy_node(t) copy_node_stat (t MEM_STAT_INFO)
3408 #define make_tree_binfo(t) make_tree_binfo_stat (t MEM_STAT_INFO)
3413 #define make_tree_vec(t) make_tree_vec_stat (t MEM_STAT_INFO)
3420 #if GCC_VERSION >= 3000
3421 #define get_identifier(str) \
3422 (__builtin_constant_p (str) \
3423 ? get_identifier_with_length ((str), strlen (str)) \
3424 : get_identifier (str))
3445 #define build0(c,t) build0_stat (c,t MEM_STAT_INFO)
3447 #define build1(c,t1,t2) build1_stat (c,t1,t2 MEM_STAT_INFO)
3449 #define build2(c,t1,t2,t3) build2_stat (c,t1,t2,t3 MEM_STAT_INFO)
3451 #define build3(c,t1,t2,t3,t4) build3_stat (c,t1,t2,t3,t4 MEM_STAT_INFO)
3453 tree MEM_STAT_DECL);
3454 #define build4(c,t1,t2,t3,t4,t5) build4_stat (c,t1,t2,t3,t4,t5 MEM_STAT_INFO)
3456 tree MEM_STAT_DECL);
3457 #define build5(c,t1,t2,t3,t4,t5,t6) build5_stat (c,t1,t2,t3,t4,t5,t6 MEM_STAT_INFO)
3463 tree arg1 MEM_STAT_DECL)
3466 if (CAN_HAVE_LOCATION_P (t))
3467 SET_EXPR_LOCATION (t, loc);
3470 #define build1_loc(l,c,t1,t2) build1_stat_loc (l,c,t1,t2 MEM_STAT_INFO)
3474 tree arg1 MEM_STAT_DECL)
3477 if (CAN_HAVE_LOCATION_P (t))
3478 SET_EXPR_LOCATION (t, loc);
3481 #define build2_loc(l,c,t1,t2,t3) build2_stat_loc (l,c,t1,t2,t3 MEM_STAT_INFO)
3485 tree arg1,
tree arg2 MEM_STAT_DECL)
3488 if (CAN_HAVE_LOCATION_P (t))
3489 SET_EXPR_LOCATION (t, loc);
3492 #define build3_loc(l,c,t1,t2,t3,t4) \
3493 build3_stat_loc (l,c,t1,t2,t3,t4 MEM_STAT_INFO)
3499 tree t =
build4_stat (code, type, arg0, arg1, arg2, arg3 PASS_MEM_STAT);
3500 if (CAN_HAVE_LOCATION_P (t))
3501 SET_EXPR_LOCATION (t, loc);
3504 #define build4_loc(l,c,t1,t2,t3,t4,t5) \
3505 build4_stat_loc (l,c,t1,t2,t3,t4,t5 MEM_STAT_INFO)
3512 arg4 PASS_MEM_STAT);
3513 if (CAN_HAVE_LOCATION_P (t))
3514 SET_EXPR_LOCATION (t, loc);
3517 #define build5_loc(l,c,t1,t2,t3,t4,t5,t6) \
3518 build5_stat_loc (l,c,t1,t2,t3,t4,t5,t6 MEM_STAT_INFO)
3521 #define build_var_debug_value(t1,t2) \
3522 build_var_debug_value_stat (t1,t2 MEM_STAT_INFO)
3529 return TREE_INT_CST (cst);
3548 #define make_vector(n) make_vector_stat (n MEM_STAT_INFO)
3550 #define build_vector(t,v) build_vector_stat (t, v MEM_STAT_INFO)
3565 #define build_tree_list(t, q) build_tree_list_stat (t, q MEM_STAT_INFO)
3567 #define build_tree_list_vec(v) build_tree_list_vec_stat (v MEM_STAT_INFO)
3571 #define build_decl(l,c,t,q) build_decl_stat (l, c, t, q MEM_STAT_INFO)
3578 #define build_vl_exp(c, n) build_vl_exp_stat (c, n MEM_STAT_INFO)
3582 #define build_call_array(T1,T2,N,T3)\
3583 build_call_array_loc (UNKNOWN_LOCATION, T1, T2, N, T3)
3615 #define build_function_type_vec(RET, V) \
3616 build_function_type_array (RET, vec_safe_length (V), vec_safe_address (V))
3617 #define build_varargs_function_type_vec(RET, V) \
3618 build_varargs_function_type_array (RET, vec_safe_length (V), \
3619 vec_safe_address (V))
3639 #ifndef ENABLE_TREE_CHECKING
3644 #if !defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 4003)
3649 return TREE_INT_CST_LOW (t);
3669 #define make_signed_fract_type(P) make_fract_type (P, 0, 0)
3670 #define make_unsigned_fract_type(P) make_fract_type (P, 1, 0)
3671 #define make_sat_signed_fract_type(P) make_fract_type (P, 0, 1)
3672 #define make_sat_unsigned_fract_type(P) make_fract_type (P, 1, 1)
3673 #define make_signed_accum_type(P) make_accum_type (P, 0, 0)
3674 #define make_unsigned_accum_type(P) make_accum_type (P, 1, 0)
3675 #define make_sat_signed_accum_type(P) make_accum_type (P, 0, 1)
3676 #define make_sat_unsigned_accum_type(P) make_accum_type (P, 1, 1)
3678 #define make_or_reuse_signed_fract_type(P) \
3679 make_or_reuse_fract_type (P, 0, 0)
3680 #define make_or_reuse_unsigned_fract_type(P) \
3681 make_or_reuse_fract_type (P, 1, 0)
3682 #define make_or_reuse_sat_signed_fract_type(P) \
3683 make_or_reuse_fract_type (P, 0, 1)
3684 #define make_or_reuse_sat_unsigned_fract_type(P) \
3685 make_or_reuse_fract_type (P, 1, 1)
3686 #define make_or_reuse_signed_accum_type(P) \
3687 make_or_reuse_accum_type (P, 0, 0)
3688 #define make_or_reuse_unsigned_accum_type(P) \
3689 make_or_reuse_accum_type (P, 1, 0)
3690 #define make_or_reuse_sat_signed_accum_type(P) \
3691 make_or_reuse_accum_type (P, 0, 1)
3692 #define make_or_reuse_sat_unsigned_accum_type(P) \
3693 make_or_reuse_accum_type (P, 1, 1)
3738 gcc_checking_assert (attr_name[0] !=
'_');
3740 if (list == NULL_TREE)
3761 gcc_checking_assert (attr_name[0] !=
'_');
3778 #if TARGET_DLLIMPORT_DECL_ATTRIBUTES
3812 #define build_type_variant(TYPE, CONST_P, VOLATILE_P) \
3813 build_qualified_type ((TYPE), \
3814 ((CONST_P) ? TYPE_QUAL_CONST : 0) \
3815 | ((VOLATILE_P) ? TYPE_QUAL_VOLATILE : 0))
3877 #define non_lvalue(T) non_lvalue_loc (UNKNOWN_LOCATION, T)
3893 #define sizetype sizetype_tab[(int) stk_sizetype]
3894 #define bitsizetype sizetype_tab[(int) stk_bitsizetype]
3895 #define ssizetype sizetype_tab[(int) stk_ssizetype]
3896 #define sbitsizetype sizetype_tab[(int) stk_sbitsizetype]
3899 #define size_binop(CODE,T1,T2)\
3900 size_binop_loc (UNKNOWN_LOCATION, CODE, T1, T2)
3902 #define size_diffop(T1,T2)\
3903 size_diffop_loc (UNKNOWN_LOCATION, T1, T2)
3906 #define size_int(L) size_int_kind (L, stk_sizetype)
3907 #define ssize_int(L) size_int_kind (L, stk_ssizetype)
3908 #define bitsize_int(L) size_int_kind (L, stk_bitsizetype)
3909 #define sbitsize_int(L) size_int_kind (L, stk_sbitsizetype)
3911 #define round_up(T,N) round_up_loc (UNKNOWN_LOCATION, T, N)
3913 #define round_down(T,N) round_down_loc (UNKNOWN_LOCATION, T, N)
3919 #define BITS_PER_UNIT_LOG \
3920 ((BITS_PER_UNIT > 1) + (BITS_PER_UNIT > 2) + (BITS_PER_UNIT > 4) \
3921 + (BITS_PER_UNIT > 8) + (BITS_PER_UNIT > 16) + (BITS_PER_UNIT > 32) \
3922 + (BITS_PER_UNIT > 64) + (BITS_PER_UNIT > 128) + (BITS_PER_UNIT > 256))
3933 #define tree_cons(t,q,w) tree_cons_stat (t,q,w MEM_STAT_INFO)
4044 #define CONTAINS_PLACEHOLDER_P(EXP) \
4045 ((EXP) != 0 && ! TREE_CONSTANT (EXP) && contains_placeholder_p (EXP))
4065 #define FIND_PLACEHOLDER_IN_EXPR(EXP, V) \
4067 if((EXP) && !TREE_CONSTANT (EXP)) \
4068 find_placeholder_in_expr (EXP, V); \
4083 #define SUBSTITUTE_IN_EXPR(EXP, F, R) \
4084 ((EXP) == 0 || TREE_CONSTANT (EXP) ? (EXP) : substitute_in_expr (EXP, F, R))
4094 #define SUBSTITUTE_PLACEHOLDER_IN_EXPR(EXP, OBJ) \
4095 ((EXP) == 0 || TREE_CONSTANT (EXP) ? (EXP) \
4096 : substitute_placeholder_in_expr (EXP, OBJ))
4137 switch (TREE_CODE (t))
4142 case ARRAY_RANGE_REF:
4145 case VIEW_CONVERT_EXPR:
4158 tree *,
enum machine_mode *,
int *,
int *,
4204 i->next = TYPE_ARG_TYPES (fntype);
4210 static inline tree *
4213 return (i->next) ? &TREE_VALUE (i->next) : NULL;
4222 return (i->next) ? TREE_VALUE (i->next) : NULL_TREE;
4229 gcc_assert (i->next != NULL_TREE);
4230 i->next = TREE_CHAIN (i->next);
4238 return LOCATION_LOCUS (BLOCK_SOURCE_LOCATION (block)) != UNKNOWN_LOCATION;
4244 #define FOREACH_FUNCTION_ARGS_PTR(FNTYPE, PTR, ITER) \
4245 for (function_args_iter_init (&(ITER), (FNTYPE)); \
4246 (PTR = function_args_iter_cond_ptr (&(ITER))) != NULL; \
4247 function_args_iter_next (&(ITER)))
4252 #define FOREACH_FUNCTION_ARGS(FNTYPE, TREE, ITER) \
4253 for (function_args_iter_init (&(ITER), (FNTYPE)); \
4254 (TREE = function_args_iter_cond (&(ITER))) != NULL_TREE; \
4255 function_args_iter_next (&(ITER)))
4313 const void *
const * x = (
const void *
const *) a;
4314 const void *
const * y = (
const void *
const *) b;
4318 static inline hashval_t
4321 const void *
const * x = (
const void *
const *) a;
4322 return (intptr_t)*x >> 4;
4342 #define fold_unary(CODE,T1,T2)\
4343 fold_unary_loc (UNKNOWN_LOCATION, CODE, T1, T2)
4345 #define fold_unary_ignore_overflow(CODE,T1,T2)\
4346 fold_unary_ignore_overflow_loc (UNKNOWN_LOCATION, CODE, T1, T2)
4348 #define fold_binary(CODE,T1,T2,T3)\
4349 fold_binary_loc (UNKNOWN_LOCATION, CODE, T1, T2, T3)
4351 #define fold_ternary(CODE,T1,T2,T3,T4)\
4352 fold_ternary_loc (UNKNOWN_LOCATION, CODE, T1, T2, T3, T4)
4354 #define fold_build1(c,t1,t2)\
4355 fold_build1_stat_loc (UNKNOWN_LOCATION, c, t1, t2 MEM_STAT_INFO)
4356 #define fold_build1_loc(l,c,t1,t2)\
4357 fold_build1_stat_loc (l, c, t1, t2 MEM_STAT_INFO)
4359 tree MEM_STAT_DECL);
4360 #define fold_build2(c,t1,t2,t3)\
4361 fold_build2_stat_loc (UNKNOWN_LOCATION, c, t1, t2, t3 MEM_STAT_INFO)
4362 #define fold_build2_loc(l,c,t1,t2,t3)\
4363 fold_build2_stat_loc (l, c, t1, t2, t3 MEM_STAT_INFO)
4365 tree MEM_STAT_DECL);
4366 #define fold_build3(c,t1,t2,t3,t4)\
4367 fold_build3_stat_loc (UNKNOWN_LOCATION, c, t1, t2, t3, t4 MEM_STAT_INFO)
4368 #define fold_build3_loc(l,c,t1,t2,t3,t4)\
4369 fold_build3_stat_loc (l, c, t1, t2, t3, t4 MEM_STAT_INFO)
4371 tree MEM_STAT_DECL);
4375 #define fold_build_call_array(T1,T2,N,T4)\
4376 fold_build_call_array_loc (UNKNOWN_LOCATION, T1, T2, N, T4)
4378 #define fold_build_call_array_initializer(T1,T2,N,T4)\
4379 fold_build_call_array_initializer_loc (UNKNOWN_LOCATION, T1, T2, N, T4)
4382 #define fold_convert(T1,T2)\
4383 fold_convert_loc (UNKNOWN_LOCATION, T1, T2)
4396 #define omit_one_operand(T1,T2,T3)\
4397 omit_one_operand_loc (UNKNOWN_LOCATION, T1, T2, T3)
4399 #define omit_two_operands(T1,T2,T3,T4)\
4400 omit_two_operands_loc (UNKNOWN_LOCATION, T1, T2, T3, T4)
4402 #define invert_truthvalue(T)\
4403 invert_truthvalue_loc (UNKNOWN_LOCATION, T)
4409 #define build_fold_addr_expr(T)\
4410 build_fold_addr_expr_loc (UNKNOWN_LOCATION, (T))
4412 #define build_fold_addr_expr_with_type(T,TYPE)\
4413 build_fold_addr_expr_with_type_loc (UNKNOWN_LOCATION, (T), TYPE)
4417 #define build_fold_indirect_ref(T)\
4418 build_fold_indirect_ref_loc (UNKNOWN_LOCATION, T)
4420 #define fold_indirect_ref(T)\
4421 fold_indirect_ref_loc (UNKNOWN_LOCATION, T)
4424 #define build_simple_mem_ref(T)\
4425 build_simple_mem_ref_loc (UNKNOWN_LOCATION, T)
4461 || code == TRUTH_AND_EXPR || code == TRUTH_ANDIF_EXPR
4462 || code == TRUTH_OR_EXPR || code == TRUTH_ORIF_EXPR
4463 || code == TRUTH_XOR_EXPR || code == TRUTH_NOT_EXPR);
4471 return (INTEGRAL_TYPE_P (type)
4472 && TYPE_PRECISION (type) == TYPE_PRECISION (sizetype)
4473 && TYPE_UNSIGNED (type) == TYPE_UNSIGNED (sizetype));
4483 #define convert_to_ptrofftype(t) convert_to_ptrofftype_loc (UNKNOWN_LOCATION, t)
4489 return fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (ptr),
4492 #define fold_build_pointer_plus(p,o) \
4493 fold_build_pointer_plus_loc (UNKNOWN_LOCATION, p, o)
4499 return fold_build2_loc (loc, POINTER_PLUS_EXPR, TREE_TYPE (ptr),
4500 ptr, size_int (off));
4502 #define fold_build_pointer_plus_hwi(p,o) \
4503 fold_build_pointer_plus_hwi_loc (UNKNOWN_LOCATION, p, o)
4561 #ifndef GENERATOR_FILE
4570 const_tree, hashval_t);
4648 extern void debug_raw (
const tree_node &ref);
4649 extern void debug_raw (
const tree_node *ptr);
4650 extern void debug (
const tree_node &ref);
4651 extern void debug (
const tree_node *ptr);
4654 extern void debug_head (
const tree_node &ref);
4655 extern void debug_head (
const tree_node *ptr);
4656 extern void debug_body (
const tree_node &ref);
4657 extern void debug_body (
const tree_node *ptr);
4664 extern void dump_addr (FILE*,
const char *,
const void *);
4769 bool *,
bool *,
bool *);
4771 const char *
const *,
bool *,
bool *);
4786 #define walk_tree(a,b,c,d) \
4787 walk_tree_1 (a, b, c, d, NULL)
4788 #define walk_tree_without_duplicates(a,b,c) \
4789 walk_tree_without_duplicates_1 (a, b, c, NULL)
4807 #define tree_map_eq tree_map_base_eq
4809 #define tree_map_marked_p tree_map_base_marked_p
4811 #define tree_decl_map_eq tree_map_base_eq
4813 #define tree_decl_map_marked_p tree_map_base_marked_p
4815 #define tree_int_map_eq tree_map_base_eq
4816 #define tree_int_map_hash tree_map_base_hash
4817 #define tree_int_map_marked_p tree_map_base_marked_p
4819 #define tree_priority_map_eq tree_map_base_eq
4820 #define tree_priority_map_hash tree_map_base_hash
4821 #define tree_priority_map_marked_p tree_map_base_marked_p
4823 #define tree_vec_map_eq tree_map_base_eq
4824 #define tree_vec_map_hash tree_decl_map_hash
4825 #define tree_vec_map_marked_p tree_map_base_marked_p
4873 iter->n = call_expr_nargs (exp);
4881 iter->n = call_expr_nargs (exp);
4891 if (iter->i >= iter->n)
4893 result = CALL_EXPR_ARG (iter->t, iter->i);
4898 static inline const_tree
4902 if (iter->i >= iter->n)
4904 result = CALL_EXPR_ARG (iter->t, iter->i);
4920 static inline const_tree
4932 return (iter->i < iter->n);
4938 return (iter->i < iter->n);
4943 #define FOR_EACH_CALL_EXPR_ARG(arg, iter, call) \
4944 for ((arg) = first_call_expr_arg ((call), &(iter)); (arg); \
4945 (arg) = next_call_expr_arg (&(iter)))
4947 #define FOR_EACH_CONST_CALL_EXPR_ARG(arg, iter, call) \
4948 for ((arg) = first_const_call_expr_arg ((call), &(iter)); (arg); \
4949 (arg) = next_const_call_expr_arg (&(iter)))
4955 return TREE_CODE (t) == LANG_TYPE || TREE_CODE (t) >= NUM_TREE_CODES;
4962 #define BUILTIN_VALID_P(FNCODE) \
4963 (IN_RANGE ((int)FNCODE, ((int)BUILT_IN_NONE) + 1, ((int) END_BUILTINS) - 1))
4969 gcc_checking_assert (BUILTIN_VALID_P (fncode));
4978 size_t uns_fncode = (size_t)fncode;
4979 gcc_checking_assert (BUILTIN_VALID_P (fncode));
4993 size_t ufncode = (size_t)fncode;
4995 gcc_checking_assert (BUILTIN_VALID_P (fncode)
4996 && (decl != NULL_TREE || !implicit_p));
5007 size_t uns_fncode = (size_t)fncode;
5009 gcc_checking_assert (BUILTIN_VALID_P (fncode)
5021 gcc_checking_assert (BUILTIN_VALID_P (fncode));
5022 return (
builtin_info.decl[(
size_t)fncode] != NULL_TREE);
5030 size_t uns_fncode = (size_t)fncode;
5032 gcc_checking_assert (BUILTIN_VALID_P (fncode));
5043 return (TREE_STATIC (t) || DECL_EXTERNAL (t));
5053 return (TREE_CODE (var) != CONST_DECL
5054 && !((TREE_STATIC (var) || TREE_PUBLIC (var) || DECL_EXTERNAL (var))
5055 && TREE_READONLY (var)
5056 && !TYPE_NEEDS_CONSTRUCTING (TREE_TYPE (var)))
5057 && (TREE_PUBLIC (var)
5058 || DECL_EXTERNAL (var)
5059 || TREE_ADDRESSABLE (var)));
5065 #ifndef NO_DOT_IN_LABEL
5066 #define ANON_AGGRNAME_FORMAT "._%d"
5067 #define ANON_AGGRNAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[0] == '.' \
5068 && IDENTIFIER_POINTER (ID_NODE)[1] == '_')
5070 #ifndef NO_DOLLAR_IN_LABEL
5071 #define ANON_AGGRNAME_FORMAT "$_%d"
5072 #define ANON_AGGRNAME_P(ID_NODE) (IDENTIFIER_POINTER (ID_NODE)[0] == '$' \
5073 && IDENTIFIER_POINTER (ID_NODE)[1] == '_')
5075 #define ANON_AGGRNAME_PREFIX "__anon_"
5076 #define ANON_AGGRNAME_P(ID_NODE) \
5077 (!strncmp (IDENTIFIER_POINTER (ID_NODE), ANON_AGGRNAME_PREFIX, \
5078 sizeof (ANON_AGGRNAME_PREFIX) - 1))
5079 #define ANON_AGGRNAME_FORMAT "__anon_%d"