Lines Matching refs:NODE
176 /* Returns nonzero iff NODE is an expression of some kind. */
178 #define EXPR_P(NODE) IS_EXPR_CODE_CLASS (TREE_CODE_CLASS (TREE_CODE (NODE)))
180 /* Number of argument-words in each kind of tree-node. */
266 /* In an OMP_CLAUSE node. */
335 /* A tree node can represent a data type, a variable, an expression
336 or a statement. Each node has a TREE_CODE which says what kind of
344 As for the contents of a tree node: there are some fields
346 fields as well. The fields of a node are never accessed directly,
349 /* Every kind of tree node starts with this structure,
633 /* The tree-code says what kind of node it is.
635 #define TREE_CODE(NODE) ((enum tree_code) (NODE)->base.code)
636 #define TREE_SET_CODE(NODE, VALUE) ((NODE)->base.code = (VALUE))
638 /* When checking is enabled, errors will be generated if a tree node
852 #define TREE_CHAIN(NODE) __extension__ \
853 (*({__typeof (NODE) const __t = (NODE); \
860 #define TREE_TYPE(NODE) __extension__ \
861 (*({__typeof (NODE) const __t = (NODE); \
928 #define TREE_CHAIN(NODE) ((NODE)->common.chain)
929 #define TREE_TYPE(NODE) ((NODE)->common.type)
933 #define TREE_BLOCK(NODE) *(tree_block (NODE))
963 /* A simple hash function for an arbitrary tree node. This must not be
965 #define TREE_HASH(NODE) ((size_t) (NODE) & 0777777)
1091 #define COMPLETE_TYPE_P(NODE) (TYPE_SIZE (NODE) != NULL_TREE)
1094 #define VOID_TYPE_P(NODE) (TREE_CODE (NODE) == VOID_TYPE)
1097 #define COMPLETE_OR_VOID_TYPE_P(NODE) \
1098 (COMPLETE_TYPE_P (NODE) || VOID_TYPE_P (NODE))
1101 #define COMPLETE_OR_UNBOUND_ARRAY_TYPE_P(NODE) \
1102 (COMPLETE_TYPE_P (TREE_CODE (NODE) == ARRAY_TYPE ? TREE_TYPE (NODE) : (NODE)))
1112 In a FIELD_DECL node, it means that the programmer is permitted to
1123 #define TREE_ADDRESSABLE(NODE) ((NODE)->base.addressable_flag)
1128 #define CALL_EXPR_TAILCALL(NODE) \
1129 (CALL_EXPR_CHECK(NODE)->base.addressable_flag)
1133 #define CASE_LOW_SEEN(NODE) \
1134 (CASE_LABEL_EXPR_CHECK (NODE)->base.addressable_flag)
1136 #define PREDICT_EXPR_OUTCOME(NODE) \
1137 (PREDICT_EXPR_CHECK(NODE)->base.addressable_flag)
1138 #define PREDICT_EXPR_PREDICTOR(NODE) \
1139 ((enum br_predictor)tree_low_cst (TREE_OPERAND (PREDICT_EXPR_CHECK (NODE), 0), 0))
1144 #define TREE_STATIC(NODE) ((NODE)->base.static_flag)
1147 #define TREE_NO_TRAMPOLINE(NODE) (ADDR_EXPR_CHECK (NODE)->base.static_flag)
1152 #define CLEANUP_EH_ONLY(NODE) ((NODE)->base.static_flag)
1156 #define TRY_CATCH_IS_CLEANUP(NODE) \
1157 (TRY_CATCH_EXPR_CHECK (NODE)->base.static_flag)
1161 #define CASE_HIGH_SEEN(NODE) \
1162 (CASE_LABEL_EXPR_CHECK (NODE)->base.static_flag)
1165 #define CALL_CANNOT_INLINE_P(NODE) (CALL_EXPR_CHECK (NODE)->base.static_flag)
1167 /* In an expr node (usually a conversion) this means the node was made
1168 implicitly and should not lead to any sort of warning. In a decl node,
1172 #define TREE_NO_WARNING(NODE) ((NODE)->base.nowarning_flag)
1176 #define TREE_SYMBOL_REFERENCED(NODE) \
1177 (IDENTIFIER_NODE_CHECK (NODE)->base.static_flag)
1181 #define TYPE_REF_CAN_ALIAS_ALL(NODE) \
1182 (PTR_OR_REF_CHECK (NODE)->base.static_flag)
1185 #define MOVE_NONTEMPORAL(NODE) \
1186 (EXPR_CHECK (NODE)->base.static_flag)
1191 #define TREE_OVERFLOW(NODE) (CST_CHECK (NODE)->base.public_flag)
1194 #define TREE_CONSTANT_OVERFLOW(NODE) TREE_OVERFLOW(NODE)
1206 #define TREE_PUBLIC(NODE) ((NODE)->base.public_flag)
1210 #define TYPE_CACHED_VALUES_P(NODE) (TYPE_CHECK(NODE)->base.public_flag)
1214 #define SAVE_EXPR_RESOLVED_P(NODE) \
1215 (SAVE_EXPR_CHECK (NODE)->base.public_flag)
1219 #define CALL_EXPR_VA_ARG_PACK(NODE) \
1220 (CALL_EXPR_CHECK(NODE)->base.public_flag)
1227 #define TREE_SIDE_EFFECTS(NODE) \
1228 (NON_TYPE_CHECK (NODE)->base.side_effects_flag)
1233 #define FORCED_LABEL(NODE) (LABEL_DECL_CHECK (NODE)->base.side_effects_flag)
1239 On a FUNCTION_DECL node, this means the function does not
1243 In a ..._TYPE node, means this type is volatile-qualified.
1244 But use TYPE_VOLATILE instead of this macro when the node is a type,
1248 #define TREE_THIS_VOLATILE(NODE) ((NODE)->base.volatile_flag)
1250 /* Nonzero means this node will not trap. In an INDIRECT_REF, means
1260 #define TREE_THIS_NOTRAP(NODE) ((NODE)->base.nothrow_flag)
1262 /* In a VAR_DECL, PARM_DECL or FIELD_DECL, or any kind of ..._REF node,
1266 #define TREE_READONLY(NODE) (NON_TYPE_CHECK (NODE)->base.readonly_flag)
1270 #define TREE_CONSTANT(NODE) (NON_TYPE_CHECK (NODE)->base.constant_flag)
1272 /* Nonzero if NODE, a type, has had its sizes gimplified. */
1273 #define TYPE_SIZES_GIMPLIFIED(NODE) \
1274 (TYPE_CHECK (NODE)->base.constant_flag)
1277 #define DECL_UNSIGNED(NODE) \
1278 (DECL_COMMON_CHECK (NODE)->base.unsigned_flag)
1281 #define TYPE_UNSIGNED(NODE) (TYPE_CHECK (NODE)->base.unsigned_flag)
1289 In a BLOCK node, nonzero if reorder_blocks has already seen this block.
1290 In an SSA_NAME node, nonzero if the SSA_NAME occurs in an abnormal
1291 PHI node. */
1292 #define TREE_ASM_WRITTEN(NODE) ((NODE)->base.asm_written_flag)
1295 Nonzero in an expr node means inhibit warning if value is unused.
1299 #define TREE_USED(NODE) ((NODE)->base.used_flag)
1303 #define TREE_NOTHROW(NODE) ((NODE)->base.nothrow_flag)
1307 #define CALL_EXPR_RETURN_SLOT_OPT(NODE) \
1308 (CALL_EXPR_CHECK (NODE)->base.private_flag)
1312 #define DECL_BY_REFERENCE(NODE) (DECL_COMMON_CHECK (NODE)->base.private_flag)
1316 #define CALL_FROM_THUNK_P(NODE) (CALL_EXPR_CHECK (NODE)->base.protected_flag)
1325 In an SSA_NAME node, nonzero if the SSA_NAME node is on the SSA_NAME
1327 #define TYPE_ALIGN_OK(NODE) (TYPE_CHECK (NODE)->base.nothrow_flag)
1330 #define TREE_PRIVATE(NODE) ((NODE)->base.private_flag)
1332 #define TREE_PROTECTED(NODE) ((NODE)->base.protected_flag)
1336 #define TREE_DEPRECATED(NODE) \
1337 ((NODE)->base.deprecated_flag)
1341 #define IDENTIFIER_TRANSPARENT_ALIAS(NODE) \
1342 (IDENTIFIER_NODE_CHECK (NODE)->base.deprecated_flag)
1345 #define TYPE_SATURATING(NODE) ((NODE)->base.saturating_flag)
1348 #define TREE_LANG_FLAG_0(NODE) ((NODE)->base.lang_flag_0)
1349 #define TREE_LANG_FLAG_1(NODE) ((NODE)->base.lang_flag_1)
1350 #define TREE_LANG_FLAG_2(NODE) ((NODE)->base.lang_flag_2)
1351 #define TREE_LANG_FLAG_3(NODE) ((NODE)->base.lang_flag_3)
1352 #define TREE_LANG_FLAG_4(NODE) ((NODE)->base.lang_flag_4)
1353 #define TREE_LANG_FLAG_5(NODE) ((NODE)->base.lang_flag_5)
1354 #define TREE_LANG_FLAG_6(NODE) ((NODE)->base.lang_flag_6)
1359 /* In an INTEGER_CST node. These two together make a 2-word integer.
1363 #define TREE_INT_CST(NODE) (INTEGER_CST_CHECK (NODE)->int_cst.int_cst)
1364 #define TREE_INT_CST_LOW(NODE) (TREE_INT_CST (NODE).low)
1365 #define TREE_INT_CST_HIGH(NODE) (TREE_INT_CST (NODE).high)
1385 /* In a REAL_CST node. struct real_value is an opaque entity, with
1390 #define TREE_REAL_CST_PTR(NODE) (REAL_CST_CHECK (NODE)->real_cst.real_cst_ptr)
1391 #define TREE_REAL_CST(NODE) (*TREE_REAL_CST_PTR (NODE))
1399 /* In a FIXED_CST node. */
1402 #define TREE_FIXED_CST_PTR(NODE) (FIXED_CST_CHECK (NODE)->fixed_cst.fixed_cst_ptr)
1403 #define TREE_FIXED_CST(NODE) (*TREE_FIXED_CST_PTR (NODE))
1412 #define TREE_STRING_LENGTH(NODE) (STRING_CST_CHECK (NODE)->string.length)
1413 #define TREE_STRING_POINTER(NODE) \
1414 ((const char *)(STRING_CST_CHECK (NODE)->string.str))
1423 /* In a COMPLEX_CST node. */
1424 #define TREE_REALPART(NODENODE)->complex.real)
1425 #define TREE_IMAGPART(NODE) (COMPLEX_CST_CHECK (NODE)->complex.imag)
1434 /* In a VECTOR_CST node. */
1435 #define TREE_VECTOR_CST_ELTS(NODE) (VECTOR_CST_CHECK (NODE)->vector.elements)
1448 #define IDENTIFIER_LENGTH(NODE) \
1449 (IDENTIFIER_NODE_CHECK (NODE)->identifier.id.len)
1450 #define IDENTIFIER_POINTER(NODE) \
1451 ((const char *) IDENTIFIER_NODE_CHECK (NODE)->identifier.id.str)
1452 #define IDENTIFIER_HASH_VALUE(NODE) \
1453 (IDENTIFIER_NODE_CHECK (NODE)->identifier.id.hash_value)
1458 #define HT_IDENT_TO_GCC_IDENT(NODE) \
1459 ((tree) ((char *) (NODE) - sizeof (struct tree_common)))
1460 #define GCC_IDENT_TO_HT_IDENT(NODE) (&((struct tree_identifier *) (NODE))->id)
1468 /* In a TREE_LIST node. */
1469 #define TREE_PURPOSE(NODE) (TREE_LIST_CHECK (NODE)->list.purpose)
1470 #define TREE_VALUE(NODE) (TREE_LIST_CHECK (NODE)->list.value)
1479 /* In a TREE_VEC node. */
1480 #define TREE_VEC_LENGTH(NODE) (TREE_VEC_CHECK (NODE)->vec.length)
1481 #define TREE_VEC_END(NODE) \
1482 ((void) TREE_VEC_CHECK (NODE), &((NODE)->vec.a[(NODE)->vec.length]))
1484 #define TREE_VEC_ELT(NODE,I) TREE_VEC_ELT_CHECK (NODE, I)
1493 /* In a CONSTRUCTOR node. */
1494 #define CONSTRUCTOR_ELTS(NODE) (CONSTRUCTOR_CHECK (NODE)->constructor.elts)
1495 #define CONSTRUCTOR_ELT(NODE,IDX) \
1496 (VEC_index (constructor_elt, CONSTRUCTOR_ELTS (NODE), IDX))
1497 #define CONSTRUCTOR_NELTS(NODE) (VEC_length (constructor_elt, CONSTRUCTOR_ELTS (NODE)))
1549 /* Nonzero if NODE is an empty statement (NOP_EXPR <0>). */
1550 #define IS_EMPTY_STMT(NODE) (TREE_CODE (NODE) == NOP_EXPR \
1551 && VOID_TYPE_P (TREE_TYPE (NODE)) \
1552 && integer_zerop (TREE_OPERAND (NODE, 0)))
1555 #define TREE_OPERAND_LENGTH(NODE) tree_operand_length (NODE)
1556 #define TREE_OPERAND(NODE, I) TREE_OPERAND_CHECK (NODE, I)
1558 /* In a tcc_vl_exp node, operand 0 is an INT_CST node holding the operand
1563 #define VL_EXP_OPERAND_LENGTH(NODE) \
1564 ((int)TREE_INT_CST_LOW (VL_EXP_CHECK (NODE)->exp.operands[0]))
1566 /* In a LOOP_EXPR node. */
1567 #define LOOP_EXPR_BODY(NODE) TREE_OPERAND_CHECK_CODE (NODE, LOOP_EXPR, 0)
1572 #define EXPR_LOCATION(NODE) (EXPR_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION)
1573 #define SET_EXPR_LOCATION(NODE, LOCUS) EXPR_CHECK ((NODE))->exp.locus = (LOCUS)
1574 #define EXPR_HAS_LOCATION(NODE) (EXPR_LOCATION (NODE) != UNKNOWN_LOCATION)
1575 #define EXPR_LOCUS(NODE) (EXPR_P (NODE) \
1576 ? CONST_CAST (source_location *, &(NODE)->exp.locus) \
1578 #define SET_EXPR_LOCUS(NODE, FROM) set_expr_locus ((NODE), (FROM))
1579 #define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus)
1580 #define EXPR_LINENO(NODE) LOCATION_LINE (EXPR_CHECK (NODE)->exp.locus)
1584 #define CAN_HAVE_LOCATION_P(NODE) (EXPR_P (NODE))
1588 /* In a TARGET_EXPR node. */
1589 #define TARGET_EXPR_SLOT(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 0)
1590 #define TARGET_EXPR_INITIAL(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 1)
1591 #define TARGET_EXPR_CLEANUP(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 2)
1595 #define DECL_EXPR_DECL(NODE) TREE_OPERAND (DECL_EXPR_CHECK (NODE), 0)
1597 #define EXIT_EXPR_COND(NODE) TREE_OPERAND (EXIT_EXPR_CHECK (NODE), 0)
1602 #define SWITCH_COND(NODE) TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 0)
1603 #define SWITCH_BODY(NODE) TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 1)
1604 #define SWITCH_LABELS(NODE) TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 2)
1608 #define CASE_LOW(NODE) TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 0)
1609 #define CASE_HIGH(NODE) TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 1)
1610 #define CASE_LABEL(NODE) TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 2)
1613 #define TMR_SYMBOL(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 0))
1614 #define TMR_BASE(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 1))
1615 #define TMR_INDEX(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 2))
1616 #define TMR_STEP(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 3))
1617 #define TMR_OFFSET(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 4))
1618 #define TMR_ORIGINAL(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 5))
1619 #define TMR_TAG(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 6))
1622 #define BIND_EXPR_VARS(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 0))
1623 #define BIND_EXPR_BODY(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 1))
1624 #define BIND_EXPR_BLOCK(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 2))
1628 #define GOTO_DESTINATION(NODE) TREE_OPERAND ((NODE), 0)
1634 #define ASM_STRING(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 0)
1635 #define ASM_OUTPUTS(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 1)
1636 #define ASM_INPUTS(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 2)
1637 #define ASM_CLOBBERS(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 3)
1640 #define ASM_INPUT_P(NODE) (ASM_EXPR_CHECK (NODE)->base.static_flag)
1641 #define ASM_VOLATILE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.public_flag)
1644 #define COND_EXPR_COND(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 0))
1645 #define COND_EXPR_THEN(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 1))
1646 #define COND_EXPR_ELSE(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 2))
1649 #define CHREC_VAR(NODE) TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 0)
1650 #define CHREC_LEFT(NODE) TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 1)
1651 #define CHREC_RIGHT(NODE) TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 2)
1652 #define CHREC_VARIABLE(NODE) TREE_INT_CST_LOW (CHREC_VAR (NODE))
1656 #define LABEL_EXPR_LABEL(NODE) TREE_OPERAND (LABEL_EXPR_CHECK (NODE), 0)
1662 #define CATCH_TYPES(NODE) TREE_OPERAND (CATCH_EXPR_CHECK (NODE), 0)
1663 #define CATCH_BODY(NODE) TREE_OPERAND (CATCH_EXPR_CHECK (NODE), 1)
1666 #define EH_FILTER_TYPES(NODE) TREE_OPERAND (EH_FILTER_EXPR_CHECK (NODE), 0)
1667 #define EH_FILTER_FAILURE(NODE) TREE_OPERAND (EH_FILTER_EXPR_CHECK (NODE), 1)
1668 #define EH_FILTER_MUST_NOT_THROW(NODE) \
1669 (EH_FILTER_EXPR_CHECK (NODE)->base.static_flag)
1672 #define CHANGE_DYNAMIC_TYPE_NEW_TYPE(NODE) \
1673 TREE_OPERAND (CHANGE_DYNAMIC_TYPE_EXPR_CHECK (NODE), 0)
1674 #define CHANGE_DYNAMIC_TYPE_LOCATION(NODE) \
1675 TREE_OPERAND (CHANGE_DYNAMIC_TYPE_EXPR_CHECK (NODE), 1)
1678 #define OBJ_TYPE_REF_EXPR(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 0)
1679 #define OBJ_TYPE_REF_OBJECT(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 1)
1680 #define OBJ_TYPE_REF_TOKEN(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 2)
1683 #define ASSERT_EXPR_VAR(NODE) TREE_OPERAND (ASSERT_EXPR_CHECK (NODE), 0)
1684 #define ASSERT_EXPR_COND(NODE) TREE_OPERAND (ASSERT_EXPR_CHECK (NODE), 1)
1688 #define CALL_EXPR_FN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 1)
1689 #define CALL_EXPR_STATIC_CHAIN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 2)
1690 #define CALL_EXPR_ARGS(NODE) call_expr_arglist (NODE)
1691 #define CALL_EXPR_ARG(NODE, I) TREE_OPERAND (CALL_EXPR_CHECK (NODE), (I) + 3)
1692 #define call_expr_nargs(NODE) (VL_EXP_OPERAND_LENGTH(NODE) - 3)
1694 /* CALL_EXPR_ARGP returns a pointer to the argument vector for NODE.
1695 We can't use &CALL_EXPR_ARG (NODE, 0) because that will complain if
1700 #define CALL_EXPR_ARGP(NODE) \
1701 (&(TREE_OPERAND (CALL_EXPR_CHECK (NODE), 0)) + 3)
1705 #define OMP_BODY(NODE) \
1706 TREE_OPERAND (TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_CRITICAL), 0)
1707 #define OMP_CLAUSES(NODE) \
1708 TREE_OPERAND (TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_SINGLE), 1)
1710 #define OMP_PARALLEL_BODY(NODE) TREE_OPERAND (OMP_PARALLEL_CHECK (NODE), 0)
1711 #define OMP_PARALLEL_CLAUSES(NODE) TREE_OPERAND (OMP_PARALLEL_CHECK (NODE), 1)
1713 #define OMP_TASK_BODY(NODE) TREE_OPERAND (OMP_TASK_CHECK (NODE), 0)
1714 #define OMP_TASK_CLAUSES(NODE) TREE_OPERAND (OMP_TASK_CHECK (NODE), 1)
1716 #define OMP_TASKREG_CHECK(NODE) TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_TASK)
1717 #define OMP_TASKREG_BODY(NODE) TREE_OPERAND (OMP_TASKREG_CHECK (NODE), 0)
1718 #define OMP_TASKREG_CLAUSES(NODE) TREE_OPERAND (OMP_TASKREG_CHECK (NODE), 1)
1720 #define OMP_FOR_BODY(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 0)
1721 #define OMP_FOR_CLAUSES(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 1)
1722 #define OMP_FOR_INIT(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 2)
1723 #define OMP_FOR_COND(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 3)
1724 #define OMP_FOR_INCR(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 4)
1725 #define OMP_FOR_PRE_BODY(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 5)
1727 #define OMP_SECTIONS_BODY(NODE) TREE_OPERAND (OMP_SECTIONS_CHECK (NODE), 0)
1728 #define OMP_SECTIONS_CLAUSES(NODE) TREE_OPERAND (OMP_SECTIONS_CHECK (NODE), 1)
1730 #define OMP_SECTION_BODY(NODE) TREE_OPERAND (OMP_SECTION_CHECK (NODE), 0)
1732 #define OMP_SINGLE_BODY(NODE) TREE_OPERAND (OMP_SINGLE_CHECK (NODE), 0)
1733 #define OMP_SINGLE_CLAUSES(NODE) TREE_OPERAND (OMP_SINGLE_CHECK (NODE), 1)
1735 #define OMP_MASTER_BODY(NODE) TREE_OPERAND (OMP_MASTER_CHECK (NODE), 0)
1737 #define OMP_ORDERED_BODY(NODE) TREE_OPERAND (OMP_ORDERED_CHECK (NODE), 0)
1739 #define OMP_CRITICAL_BODY(NODE) TREE_OPERAND (OMP_CRITICAL_CHECK (NODE), 0)
1740 #define OMP_CRITICAL_NAME(NODE) TREE_OPERAND (OMP_CRITICAL_CHECK (NODE), 1)
1742 #define OMP_CLAUSE_CHAIN(NODE) TREE_CHAIN (OMP_CLAUSE_CHECK (NODE))
1743 #define OMP_CLAUSE_DECL(NODE) \
1744 OMP_CLAUSE_OPERAND (OMP_CLAUSE_RANGE_CHECK (OMP_CLAUSE_CHECK (NODE), \
1750 #define OMP_SECTION_LAST(NODE) \
1751 (OMP_SECTION_CHECK (NODE)->base.private_flag)
1755 #define OMP_PARALLEL_COMBINED(NODE) \
1756 (OMP_PARALLEL_CHECK (NODE)->base.private_flag)
1761 #define OMP_CLAUSE_PRIVATE_DEBUG(NODE) \
1762 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PRIVATE)->base.public_flag)
1766 #define OMP_CLAUSE_PRIVATE_OUTER_REF(NODE) \
1767 TREE_PRIVATE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PRIVATE))
1771 #define OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE(NODE) \
1772 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_LASTPRIVATE)->base.public_flag)
1773 #define OMP_CLAUSE_LASTPRIVATE_STMT(NODE) \
1774 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, \
1777 #define OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ(NODE) \
1778 (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_init
1780 #define OMP_CLAUSE_IF_EXPR(NODE) \
1781 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_IF), 0)
1782 #define OMP_CLAUSE_NUM_THREADS_EXPR(NODE) \
1783 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_NUM_THREADS),0)
1784 #define OMP_CLAUSE_SCHEDULE_CHUNK_EXPR(NODE) \
1785 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SCHEDULE), 0)
1787 #define OMP_CLAUSE_COLLAPSE_EXPR(NODE) \
1788 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 0)
1789 #define OMP_CLAUSE_COLLAPSE_ITERVAR(NODE) \
1790 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 1)
1791 #define OMP_CLAUSE_COLLAPSE_COUNT(NODE) \
1792 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 2)
1794 #define OMP_CLAUSE_REDUCTION_CODE(NODE) \
1795 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION)->omp_clause.subcode.reduction_code)
1796 #define OMP_CLAUSE_REDUCTION_INIT(NODE) \
1797 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 1)
1798 #define OMP_CLAUSE_REDUCTION_MERGE(NODE) \
1799 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 2)
1800 #define OMP_CLAUSE_REDUCTION_GIMPLE_INIT(NODE) \
1801 (OMP_CLAUSE_CHECK (NODE
1802 #define OMP_CLAUSE_REDUCTION_GIMPLE_MERGE(NODE) \
1803 (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_merge
1804 #define OMP_CLAUSE_REDUCTION_PLACEHOLDER(NODE) \
1805 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 3)
1816 #define OMP_CLAUSE_SCHEDULE_KIND(NODE) \
1817 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SCHEDULE)->omp_clause.subcode.schedule_kind)
1828 #define OMP_CLAUSE_DEFAULT_KIND(NODE) \
1829 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DEFAULT)->omp_clause.subcode.default_kind)
1846 #define SSA_NAME_VAR(NODE) SSA_NAME_CHECK (NODE)->ssa_name.var
1849 #define SSA_NAME_DEF_STMT(NODE) SSA_NAME_CHECK (NODE)->ssa_name.def_stmt
1853 #define SSA_NAME_VERSION(NODE) SSA_NAME_CHECK (NODE)->ssa_name.version
1858 #define SSA_NAME_OCCURS_IN_ABNORMAL_PHI(NODE) \
1859 SSA_NAME_CHECK (NODE)->base.asm_written_flag
1864 #define SSA_NAME_IN_FREE_LIST(NODE) \
1865 SSA_NAME_CHECK (NODE)->base.nothrow_flag
1872 #define SSA_NAME_IS_DEFAULT_DEF(NODE) \
1873 SSA_NAME_CHECK (NODE)->base.default_def_flag
1905 #define SSA_NAME_IMM_USE_NODE(NODE) SSA_NAME_CHECK (NODE)->ssa_name.imm_uses
1946 #define OMP_CLAUSE_CODE(NODE) \
1947 (OMP_CLAUSE_CHECK (NODE))->omp_clause.code
1949 #define OMP_CLAUSE_SET_CODE(NODE, CODE) \
1950 ((OMP_CLAUSE_CHECK (NODE))->omp_clause.code = (CODE))
1952 #define OMP_CLAUSE_CODE(NODE) \
1953 (OMP_CLAUSE_CHECK (NODE))->omp_clause.code
1955 #define OMP_CLAUSE_OPERAND(NODE, I) \
1956 OMP_CLAUSE_ELT_CHECK (NODE, I)
1980 /* In a BLOCK node. */
1981 #define BLOCK_VARS(NODE) (BLOCK_CHECK (NODE)->block.vars)
1982 #define BLOCK_NONLOCALIZED_VARS(NODE) (BLOCK_CHECK (NODE)->block.nonlocalized_vars)
1983 #define BLOCK_NUM_NONLOCALIZED_VARS(NODE) VEC_length (tree, BLOCK_NONLOCALIZED_VARS (NODE))
1984 #define BLOCK_NONLOCALIZED_VAR(NODE,N) VEC_index (tree, BLOCK_NONLOCALIZED_VARS (NODE), N)
1985 #define BLOCK_SUBBLOCKS(NODE) (BLOCK_CHECK (NODE)->block.subblocks)
1986 #define BLOCK_SUPERCONTEXT(NODE) (BLOCK_CHECK (NODE)->block.supercontext)
1989 #define BLOCK_CHAIN(NODE) TREE_CHAIN (BLOCK_CHECK (NODE))
1990 #define BLOCK_ABSTRACT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.abstract_origin)
1991 #define BLOCK_ABSTRACT(NODE) (BLOCK_CHECK (NODE)->block.abstract_flag)
1996 #define BLOCK_NUMBER(NODE) (BLOCK_CHECK (NODE)->block.block_num)
2020 #define BLOCK_FRAGMENT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.fragment_origin)
2021 #define BLOCK_FRAGMENT_CHAIN(NODE) (BLOCK_CHECK (NODE)->block.fragment_chain)
2027 #define BLOCK_SOURCE_LOCATION(NODE) (BLOCK_CHECK (NODE)->block.locus)
2056 Each macro must check to ensure the tree node is of the proper kind of
2060 #define TYPE_UID(NODE) (TYPE_CHECK (NODE)->type.uid)
2061 #define TYPE_SIZE(NODE) (TYPE_CHECK (NODE)->type.size)
2062 #define TYPE_SIZE_UNIT(NODE) (TYPE_CHECK (NODE)->type.size_unit)
2063 #define TYPE_VALUES(NODE) (ENUMERAL_TYPE_CHECK (NODE)->type.values)
2064 #define TYPE_DOMAIN(NODE) (ARRAY_TYPE_CHECK (NODE)->type.values)
2065 #define TYPE_FIELDS(NODE) (RECORD_OR_UNION_CHECK (NODE)->type.values)
2066 #define TYPE_CACHED_VALUES(NODE) (TYPE_CHECK(NODE)->type.values)
2067 #define TYPE_ORIG_SIZE_TYPE(NODE) \
2068 (INTEGER_TYPE_CHECK (NODE)->type.values \
2069 ? TREE_TYPE ((NODE)->type.values) : NULL_TREE)
2070 #define TYPE_METHODS(NODE) (RECORD_OR_UNION_CHECK (NODE)->type.maxval)
2071 #define TYPE_VFIELD(NODE) (RECORD_OR_UNION_CHECK (NODE)->type.minval)
2072 #define TYPE_ARG_TYPES(NODE) (FUNC_OR_METHOD_CHECK (NODE)->type.values)
2073 #define TYPE_METHOD_BASETYPE(NODE) (FUNC_OR_METHOD_CHECK (NODE)->type.maxval)
2074 #define TYPE_OFFSET_BASETYPE(NODE) (OFFSET_TYPE_CHECK (NODE)->type.maxval)
2075 #define TYPE_POINTER_TO(NODE) (TYPE_CHECK (NODE)->type.pointer_to)
2076 #define TYPE_REFERENCE_TO(NODE) (TYPE_CHECK (NODE)->type.reference_to)
2077 #define TYPE_NEXT_PTR_TO(NODE) (POINTER_TYPE_CHECK (NODE)->type.minval)
2078 #define TYPE_NEXT_REF_TO(NODE) (REFERENCE_TYPE_CHECK (NODE)->type.minval)
2079 #define TYPE_MIN_VALUE(NODE) (NUMERICAL_TYPE_CHECK (NODE)->type.minval)
2080 #define TYPE_MAX_VALUE(NODE) (NUMERICAL_TYPE_CHECK (NODE)->type.maxval)
2081 #define TYPE_PRECISION(NODE) (TYPE_CHECK (NODE)->type.precision)
2082 #define TYPE_SYMTAB_ADDRESS(NODE) (TYPE_CHECK (NODE)->type.symtab.address)
2083 #define TYPE_SYMTAB_POINTER(NODE) (TYPE_CHECK (NODE)->type.symtab.pointer)
2084 #define TYPE_SYMTAB_DIE(NODE) (TYPE_CHECK (NODE)->type.symtab.die)
2085 #define TYPE_NAME(NODE) (TYPE_CHECK (NODE)->type.name)
2086 #define TYPE_NEXT_VARIANT(NODE) (TYPE_CHECK (NODE)->type.next_variant)
2087 #define TYPE_MAIN_VARIANT(NODE) (TYPE_CHECK (NODE)->type.main_variant)
2088 #define TYPE_CONTEXT(NODE) (TYPE_CHECK (NODE)->type.context)
2092 #define TYPE_MODE(NODE) \
2093 (TREE_CODE (TYPE_CHECK (NODE)) == VECTOR_TYPE \
2094 ? vector_type_mode (NODE) : (NODE)->type.mode)
2095 #define SET_TYPE_MODE(NODE, MODE) \
2096 (TYPE_CHECK (NODE)->type.mode = (MODE))
2098 /* The "canonical" type for this type node, which can be used to
2107 #define TYPE_CANONICAL(NODE) (TYPE_CHECK (NODE)->type.canonical)
2108 /* Indicates that the type node requires structural equality
2113 node. */
2114 #define TYPE_STRUCTURAL_EQUALITY_P(NODE) (TYPE_CANONICAL (NODE) == NULL_TREE)
2116 type node requires structural equality. */
2117 #define SET_TYPE_STRUCTURAL_EQUALITY(NODE) (TYPE_CANONICAL (NODE) = NULL_TREE)
2118 #define TYPE_LANG_SPECIFIC(NODE) (TYPE_CHECK (NODE)->type.lang_specific)
2119 #define TYPE_IBIT(NODE) (GET_MODE_IBIT (TYPE_MODE (NODE)))
2120 #define TYPE_FBIT(NODE) (GET_MODE_FBIT (TYPE_MODE (NODE)))
2122 /* For a VECTOR_TYPE node, this describes a different type which is emitted
2125 #define TYPE_DEBUG_REPRESENTATION_TYPE(NODE) (VECTOR_TYPE_CHECK (NODE)->type.values)
2129 #define TYPE_BINFO(NODE) (RECORD_OR_UNION_CHECK(NODE)->type.binfo)
2132 #define TYPE_LANG_SLOT_1(NODE) (NOT_RECORD_OR_UNION_CHECK(NODE)->type.binfo)
2139 #define TYPE_ALIAS_SET(NODE) (TYPE_CHECK (NODE)->type.alias_set)
2143 #define TYPE_ALIAS_SET_KNOWN_P(NODE) (TYPE_CHECK (NODE)->type.alias_set != -1)
2147 #define TYPE_ATTRIBUTES(NODE) (TYPE_CHECK (NODE)->type.attributes)
2151 #define TYPE_ALIGN(NODE) (TYPE_CHECK (NODE)->type.align)
2155 #define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->type.user_align)
2157 /* The alignment for NODE, in bytes. */
2158 #define TYPE_ALIGN_UNIT(NODE) (TYPE_ALIGN (NODE) / BITS_PER_UNIT)
2163 type node. You then set the TYPE_STUB_DECL field of the type node
2164 to point back at the TYPE_DECL node. This allows the debug routines
2167 #define TYPE_STUB_DECL(NODE) TREE_CHAIN (NODE)
2172 #define TYPE_NO_FORCE_BLK(NODE) (TYPE_CHECK (NODE)->type.no_force_blk_flag)
2182 #define TYPE_IS_SIZETYPE(NODE) \
2183 (INTEGER_TYPE_CHECK (NODE)->type.no_force_blk_flag)
2186 #define TYPE_VOLATILE(NODE) (TYPE_CHECK (NODE)->base.volatile_flag)
2189 #define TYPE_READONLY(NODE) (TYPE_CHECK (NODE)->base.readonly_flag)
2193 #define TYPE_RESTRICT(NODE) (TYPE_CHECK (NODE)->type.restrict_flag)
2205 #define TYPE_QUALS(NODE) \
2206 ((TYPE_READONLY (NODE
2207 | (TYPE_VOLATILE (NODE) * TYPE_QUAL_VOLATILE) \
2208 | (TYPE_RESTRICT (NODE) * TYPE_QUAL_RESTRICT))
2211 #define TYPE_LANG_FLAG_0(NODE) (TYPE_CHECK (NODE)->type.lang_flag_0)
2212 #define TYPE_LANG_FLAG_1(NODE) (TYPE_CHECK (NODE)->type.lang_flag_1)
2213 #define TYPE_LANG_FLAG_2(NODE) (TYPE_CHECK (NODE)->type.lang_flag_2)
2214 #define TYPE_LANG_FLAG_3(NODE) (TYPE_CHECK (NODE)->type.lang_flag_3)
2215 #define TYPE_LANG_FLAG_4(NODE) (TYPE_CHECK (NODE)->type.lang_flag_4)
2216 #define TYPE_LANG_FLAG_5(NODE) (TYPE_CHECK (NODE)->type.lang_flag_5)
2217 #define TYPE_LANG_FLAG_6(NODE) (TYPE_CHECK (NODE)->type.lang_flag_6)
2221 #define TREE_VISITED(NODE) ((NODE)->base.visited)
2226 #define TYPE_STRING_FLAG(NODE) (TYPE_CHECK (NODE)->type.string_flag)
2245 #define TYPE_NEEDS_CONSTRUCTING(NODE) \
2246 (TYPE_CHECK (NODE)->type.needs_constructing_flag)
2250 #define TYPE_TRANSPARENT_UNION(NODE) \
2251 (UNION_TYPE_CHECK (NODE)->type.transparent_union_flag)
2256 #define TYPE_NONALIASED_COMPONENT(NODE) \
2257 (ARRAY_TYPE_CHECK (NODE)->type.transparent_union_flag)
2261 #define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->type.packed_flag)
2266 #define TYPE_CONTAINS_PLACEHOLDER_INTERNAL(NODE) \
2267 (TYPE_CHECK (NODE)->type.contains_placeholder_bits)
2328 object to describe it. The binfo object is a TREE_VEC node.
2341 #define BINFO_VIRTUAL_P(NODE) (TREE_BINFO_CHECK (NODE)->base.static_flag)
2344 #define BINFO_MARKED(NODE) TREE_LANG_FLAG_0(TREE_BINFO_CHECK(NODE))
2345 #define BINFO_FLAG_1(NODE) TREE_LANG_FLAG_1(TREE_BINFO_CHECK(NODE))
2346 #define BINFO_FLAG_2(NODE) TREE_LANG_FLAG_2(TREE_BINFO_CHECK(NODE))
2347 #define BINFO_FLAG_3(NODE) TREE_LANG_FLAG_3(TREE_BINFO_CHECK(NODE))
2348 #define BINFO_FLAG_4(NODE) TREE_LANG_FLAG_4(TREE_BINFO_CHECK(NODE))
2349 #define BINFO_FLAG_5(NODE) TREE_LANG_FLAG_5(TREE_BINFO_CHECK(NODE))
2350 #define BINFO_FLAG_6(NODE) TREE_LANG_FLAG_6(TREE_BINFO_CHECK(NODE))
2352 /* The actual data type node being inherited in this basetype. */
2353 #define BINFO_TYPE(NODE) TREE_TYPE (TREE_BINFO_CHECK(NODE))
2361 #define BINFO_OFFSET(NODE) (TREE_BINFO_CHECK(NODE)->binfo.offset)
2362 #define BINFO_OFFSET_ZEROP(NODE) (integer_zerop (BINFO_OFFSET (NODE)))
2368 #define BINFO_VTABLE(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtable)
2373 #define BINFO_VIRTUALS(NODE) (TREE_BINFO_CHECK(NODE)->binfo.virtuals)
2381 #define BINFO_BASE_BINFOS(NODE) (&TREE_BINFO_CHECK(NODE)->binfo.base_binfos)
2383 /* The number of basetypes for NODE. */
2384 #define BINFO_N_BASE_BINFOS(NODE) (VEC_length (tree, BINFO_BASE_BINFOS (NODE)))
2387 #define BINFO_BASE_BINFO(NODE,N) \
2388 (VEC_index (tree, BINFO_BASE_BINFOS (NODE), (N)))
2389 #define BINFO_BASE_ITERATE(NODE,N,B) \
2390 (VEC_iterate (tree, BINFO_BASE_BINFOS (NODE), (N), (B)))
2391 #define BINFO_BASE_APPEND(NODE,T) \
2392 (VEC_quick_push (tree, BINFO_BASE_BINFOS (NODE), (T)))
2399 #define BINFO_VPTR_FIELD(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vptr_field)
2404 #define BINFO_BASE_ACCESSES(NODE) (TREE_BINFO_CHECK(NODE)->binfo.base_accesses)
2406 #define BINFO_BASE_ACCESS(NODE,N) \
2407 VEC_index (tree, BINFO_BASE_ACCESSES (NODE), (N))
2408 #define BINFO_BASE_ACCESS_APPEND(NODE,T) \
2409 VEC_quick_push (tree, BINFO_BASE_ACCESSES (NODE), (T))
2413 #define BINFO_SUBVTT_INDEX(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtt_subvtt)
2417 #define BINFO_VPTR_INDEX(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtt_vptr)
2423 #define BINFO_INHERITANCE_CHAIN(NODE) \
2424 (TREE_BINFO_CHECK(NODE)->binfo.inheritance)
2479 #define DECL_NAME(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.name)
2481 /* Every ..._DECL node gets a unique number. */
2482 #define DECL_UID(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.uid)
2488 #define DECL_SOURCE_LOCATION(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.locus)
2489 #define DECL_SOURCE_FILE(NODE) LOCATION_FILE (DECL_SOURCE_LOCATION (NODE))
2490 #define DECL_SOURCE_LINE(NODE) LOCATION_LINE (DECL_SOURCE_LOCATION (NODE))
2495 QUAL_UNION_TYPE node that the field is a member of. For VAR_DECL,
2501 #define DECL_CONTEXT(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.context)
2502 #define DECL_FIELD_CONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->decl_minimal.context)
2539 #define MTAG_GLOBAL(NODE) (TREE_MEMORY_TAG_CHECK (NODE)->mtag.is_global)
2540 #define MTAG_ALIASES(NODE) (TREE_MEMORY_TAG_CHECK (NODE)->mtag.aliases)
2553 #define MPT_SYMBOLS(NODE) (MEMORY_PARTITION_TAG_CHECK (NODE)->mpt.symbols)
2556 /* For any sort of a ..._DECL node, this points to the original (abstract)
2557 decl node which this decl is an instance of, or else it is NULL indicating
2561 #define DECL_ABSTRACT_ORIGIN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_origin)
2563 /* Like DECL_ABSTRACT_ORIGIN, but returns NODE if there's no abstract
2565 #define DECL_ORIGIN(NODE) \
2566 (DECL_ABSTRACT_ORIGIN (NODE) ? DECL_ABSTRACT_ORIGIN (NODE) : (NODE))
2568 /* Nonzero for any sort of ..._DECL node means this decl node represents an
2572 #define DECL_FROM_INLINE(NODE) (DECL_ABSTRACT_ORIGIN (NODE) != NULL_TREE \
2573 && DECL_ABSTRACT_ORIGIN (NODE) != (NODE))
2576 #define DECL_ATTRIBUTES(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.attributes)
2588 #define DECL_INITIAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.initial)
2592 #define DECL_SIZE(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.size)
2594 #define DECL_SIZE_UNIT(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.size_unit)
2596 #define DECL_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.align)
2597 /* The alignment of NODE, in bytes. */
2598 #define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT)
2601 #define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.user_align)
2605 #define DECL_MODE(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.mode)
2611 NODE) \
2612 (FUNCTION_DECL_CHECK (NODE)->function_decl.function_code)
2613 #define DECL_DEBUG_EXPR_IS_FROM(NODE) \
2614 (DECL_COMMON_CHECK (NODE)->decl_common.debug_expr_is_from)
2616 /* Nonzero for a given ..._DECL node means that the name of this node should
2618 #define DECL_IGNORED_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag)
2620 /* Nonzero for a given ..._DECL node means that this node represents an
2626 #define DECL_ABSTRACT(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_flag)
2629 #define DECL_LANG_SPECIFIC(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_specific)
2633 this does not necessarily imply the entity represented by NODE
2638 #define DECL_EXTERNAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.decl_flag_2)
2647 #define DECL_NONLOCAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.nonlocal_flag)
2652 #define DECL_VIRTUAL_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.virtual_flag)
2655 #define DECL_ARTIFICIAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.artificial_flag)
2658 #define DECL_LANG_FLAG_0(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_0)
2659 #define DECL_LANG_FLAG_1(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_1)
2660 #define DECL_LANG_FLAG_2(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_2)
2661 #define DECL_LANG_FLAG_3(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_3)
2662 #define DECL_LANG_FLAG_4(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_4)
2663 #define DECL_LANG_FLAG_5(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_5)
2664 #define DECL_LANG_FLAG_6(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_6)
2665 #define DECL_LANG_FLAG_7(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_7)
2670 #define DECL_POINTER_ALIAS_SET(NODE) \
2671 (DECL_COMMON_CHECK (NODE)->decl_common.pointer_alias_set)
2674 #define DECL_POINTER_ALIAS_SET_KNOWN_P(NODE) \
2675 (DECL_POINTER_ALIAS_SET (NODE) != - 1)
2767 #define DECL_HAS_VALUE_EXPR_P(NODE) \
2768 (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_3)
2769 #define DECL_VALUE_EXPR(NODE) \
2770 (decl_value_expr_lookup (DECL_WRTL_CHECK (NODE)))
2771 #define SET_DECL_VALUE_EXPR(NODE, VAL) \
2772 (decl_value_expr_insert (DECL_WRTL_CHECK (NODE), VAL))
2777 #define DECL_RTL(NODE) \
2778 (DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl \
2779 ? (NODE)->decl_with_rtl.rtl \
2780 : (make_decl_rtl (NODE), (NODE)->decl_with_rtl.rtl))
2782 /* Set the DECL_RTL for NODE to RTL. */
2783 #define SET_DECL_RTL(NODE, RTL) set_decl_rtl (NODE, RTL)
2785 /* Returns nonzero if NODE is a tree node that can contain RTL. */
2786 #define HAS_RTL_P(NODE) (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WRTL))
2788 /* Returns nonzero if the DECL_RTL for NODE has already been set. */
2789 #define DECL_RTL_SET_P(NODE) (HAS_RTL_P (NODE) && DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl != NULL)
2796 /* The DECL_RTL for NODE, if it is set, or NULL, if it is not set. */
2797 #define DECL_RTL_IF_SET(NODE) (DECL_RTL_SET_P (NODE) ? DECL_RTL (NODE) : NULL)
2800 #define DECL_REGISTER(NODE) (DECL_WRTL_CHECK (NODE)->decl_common.decl_flag_0)
2811 #define DECL_FIELD_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.offset)
2817 #define DECL_FIELD_BIT_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_offset)
2822 #define DECL_BIT_FIELD_TYPE(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_field_type)
2826 #define DECL_QUALIFIER(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.qualifier)
2832 #define DECL_OFFSET_ALIGN(NODE) \
2833 (((unsigned HOST_WIDE_INT)1) << FIELD_DECL_CHECK (NODE)->decl_common.off_align)
2835 /* Specify that DECL_ALIGN(NODE) is a multiple of X. */
2836 #define SET_DECL_OFFSET_ALIGN(NODE, X) \
2837 (FIELD_DECL_CHECK (NODE)->decl_common.off_align = exact_log2 ((X) & -(X)))
2844 #define DECL_FCONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.fcontext)
2847 #define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_1)
2851 #define DECL_BIT_FIELD(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_2)
2868 #define DECL_NONADDRESSABLE_P(NODE) \
2869 (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_3)
2886 #define LABEL_DECL_UID(NODE) \
2887 (LABEL_DECL_CHECK (NODE)->decl_common.pointer_alias_set)
2891 #define DECL_ERROR_ISSUED(NODE) (LABEL_DECL_CHECK (NODE)->decl_common.decl_flag_0)
2910 #define DECL_ARG_TYPE(NODE) (PARM_DECL_CHECK (NODE)->decl_common.initial)
2914 #define DECL_INCOMING_RTL(NODE) (PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl)
2925 #define DECL_SEEN_IN_BIND_EXPR_P(NODE) \
2926 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.seen_in_bind_expr)
2930 #define DECL_DEFER_OUTPUT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.defer_output)
2932 /* Nonzero for a given ..._DECL node means that no warnings should be
2933 generated just because this node is unused. */
2934 #define DECL_IN_SYSTEM_HEADER(NODE) \
2935 (in_system_header_at (DECL_SOURCE_LOCATION (NODE)))
2938 #define DECL_WEAK(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.weak_flag)
2946 #define DECL_DLLIMPORT_P(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.dllimport_flag)
2953 #define DECL_BASED_ON_RESTRICT_P(NODE) \
2954 (VAR_DECL_CHECK (NODE)->decl_with_vis.based_on_restrict_p)
2955 #define DECL_GET_RESTRICT_BASE(NODE) \
2956 (decl_restrict_base_lookup (VAR_DECL_CHECK (NODE)))
2957 #define SET_DECL_RESTRICT_BASE(NODE, VAL) \
2958 (decl_restrict_base_insert (VAR_DECL_CHECK (NODE), (VAL)))
2972 #define DECL_COMDAT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_flag)
2991 #define DECL_REPLACEABLE_P(NODE) \
2992 (!DECL_COMDAT (NODE) && !targetm.binds_local_p (NODE))
2997 #define DECL_ASSEMBLER_NAME(NODE) decl_assembler_name (NODE)
2999 /* Return true if NODE is a NODE that can contain a DECL_ASSEMBLER_NAME.
3001 #define HAS_DECL_ASSEMBLER_NAME_P(NODE) \
3002 (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WITH_VIS))
3004 /* Returns nonzero if the DECL_ASSEMBLER_NAME for NODE has been set. If zero,
3005 the NODE might still have a DECL_ASSEMBLER_NAME -- it just hasn't been set
3007 #define DECL_ASSEMBLER_NAME_SET_P(NODE) \
3008 (HAS_DECL_ASSEMBLER_NAME_P (NODE) && DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name != NULL_TREE)
3010 /* Set the DECL_ASSEMBLER_NAME for NODE to NAME. */
3011 #define SET_DECL_ASSEMBLER_NAME(NODE, NAME) \
3012 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name = (NAME))
3031 #define DECL_SECTION_NAME(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.section_name)
3034 #define DECL_VISIBILITY(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility)
3038 #define DECL_VISIBILITY_SPECIFIED(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility_specified)
3042 #define DECL_ONE_ONLY(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.one_only)
3079 #define DECL_IN_TEXT_SECTION(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.in_text_section)
3081 /* Nonzero for a given ..._DECL node means that this node should be
3084 #define DECL_COMMON(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.common_flag)
3088 #define DECL_HARD_REGISTER(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.hard_register)
3095 #define DECL_DEBUG_EXPR(NODE) \
3096 (decl_debug_expr_lookup (VAR_DECL_CHECK (NODE)))
3098 #define SET_DECL_DEBUG_EXPR(NODE, VAL) \
3099 (decl_debug_expr_insert (VAR_DECL_CHECK (NODE), VAL))
3112 #define DECL_HAS_INIT_PRIORITY_P(NODE) \
3113 (VAR_DECL_CHECK (NODE)->decl_with_vis.init_priority_p)
3116 NODE. */
3117 #define DECL_INIT_PRIORITY(NODE) \
3118 (decl_init_priority_lookup (NODE))
3119 /* Set the initialization priority for NODE to VAL. */
3120 #define SET_DECL_INIT_PRIORITY(NODE, VAL) \
3121 (decl_init_priority_insert (NODE, VAL))
3123 /* For a FUNCTION_DECL the finalization priority of NODE. */
3124 #define DECL_FINI_PRIORITY(NODE) \
3125 (decl_fini_priority_lookup (NODE))
3126 /* Set the finalization priority for NODE to VAL. */
3127 #define SET_DECL_FINI_PRIORITY(NODE, VAL) \
3128 (decl_fini_priority_insert (NODE, VAL))
3143 #define DECL_TLS_MODEL(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model)
3147 #define DECL_THREAD_LOCAL_P(NODE) \
3148 (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model >= TLS_MODEL_REAL)
3158 #define DECL_RESULT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.result)
3165 to an INTEGER_CST node which is suitable for use as an index
3168 #define DECL_VINDEX(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.vindex)
3185 #define DECL_RESULT(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.result)
3188 #define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.uninlinable)
3192 #define DECL_SAVED_TREE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.saved_tree)
3197 #define DECL_IS_MALLOC(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.malloc_flag)
3202 #define DECL_IS_OPERATOR_NEW(NODE) \
3203 (FUNCTION_DECL_CHECK (NODE)->function_decl.operator_new_flag)
3207 #define DECL_IS_RETURNS_TWICE(NODE) \
3208 (FUNCTION_DECL_CHECK (NODE)->function_decl.returns_twice_flag)
3212 #define DECL_PURE_P(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.pure_flag)
3220 #define DECL_LOOPING_CONST_OR_PURE_P(NODE) \
3221 (FUNCTION_DECL_CHECK (NODE)->function_decl.looping_const_or_pure_flag)
3226 #define DECL_IS_NOVOPS(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.novops_flag)
3230 #define DECL_STATIC_CONSTRUCTOR(NODE) \
3231 (FUNCTION_DECL_CHECK (NODE)->function_decl.static_ctor_flag)
3233 #define DECL_STATIC_DESTRUCTOR(NODE) \
3234 (FUNCTION_DECL_CHECK (NODE)->function_decl.static_dtor_flag)
3238 #define DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(NODE) \
3239 (FUNCTION_DECL_CHECK (NODE)->function_decl.no_instrument_function_entry_exit)
3243 #define DECL_NO_LIMIT_STACK(NODE) \
3244 (FUNCTION_DECL_CHECK (NODE)->function_decl.no_limit_stack)
3248 #define DECL_NO_STATIC_CHAIN(NODE) \
3249 (FUNCTION_DECL_CHECK (NODE)->function_decl.regdecl_flag)
3260 #define DECL_DECLARED_INLINE_P(NODE) \
3261 (FUNCTION_DECL_CHECK (NODE)->function_decl.declared_inline_flag)
3265 #define DECL_NO_INLINE_WARNING_P(NODE) \
3266 (FUNCTION_DECL_CHECK (NODE)->function_decl.no_inline_warning_flag)
3272 #define DECL_DISREGARD_INLINE_LIMITS(NODE) \
3273 (FUNCTION_DECL_CHECK (NODE)->function_decl.disregard_inline_limits)
3277 #define DECL_STRUCT_FUNCTION(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.f)
3280 #define DECL_BUILT_IN(NODE) (DECL_BUILT_IN_CLASS (NODE) != NOT_BUILT_IN)
3283 #define DECL_BUILT_IN_CLASS(NODE) \
3284 (FUNCTION_DECL_CHECK (NODE)->function_decl.built_in_class)
3289 #define DECL_ARGUMENTS(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.arguments)
3290 #define DECL_ARGUMENT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.arguments)
3294 #define DECL_FUNCTION_SPECIFIC_TARGET(NODE) \
3295 (FUNCTION_DECL_CHECK (NODE)->function_decl.function_specific_target)
3299 #define DECL_FUNCTION_SPECIFIC_OPTIMIZATION(NODE) \
3300 (FUNCTION_DECL_CHECK (NODE)->function_decl.function_specific_optimization)
3348 #define DECL_ORIGINAL_TYPE(NODE) (TYPE_DECL_CHECK (NODE)->decl_non_common.result)
3353 #define TYPE_DECL_SUPPRESS_DEBUG(NODE) \
3354 (TYPE_DECL_CHECK (NODE)->decl_common.decl_flag_2)
3357 IMPORTED_DECL node. */
3358 #define IMPORTED_DECL_ASSOCIATED_DECL(NODE) \
3359 (DECL_INITIAL (IMPORTED_DECL_CHECK (NODE)))
3372 Use the interface in tree-iterator.h to access this node. */
3374 #define STATEMENT_LIST_HEAD(NODE) \
3375 (STATEMENT_LIST_CHECK (NODE)->stmt_list.head)
3376 #define STATEMENT_LIST_TAIL(NODE) \
3377 (STATEMENT_LIST_CHECK (NODE)->stmt_list.tail)
3406 NODE) \
3407 (&OPTIMIZATION_NODE_CHECK (NODE)->optimization.opts)
3409 /* Return a tree node that encapsulates the current optimization options. */
3422 #define TREE_TARGET_OPTION(NODE) \
3423 (&TARGET_OPTION_NODE_CHECK (NODE)->target_option.opts)
3425 /* Return a tree node that encapsulates the current target options. */
3430 /* Define the overall contents of a tree node.
3432 for various types of node. */
3785 /* The node that should be placed at the end of a parameter list to
3789 anything else about this node. */
3793 #define MAIN_NAME_P(NODE) (IDENTIFIER_NODE_CHECK (NODE) == main_identifier_node)
3888 /* Compute the number of bytes occupied by 'node'. This routine only
3898 /* Lowest level primitive for allocating a node.
3905 /* Make a copy of a node, with all the same contents. */
3923 /* Return the (unique) IDENTIFIER_NODE node for a given name.
3942 previously been referred to, return that node; otherwise return
4130 /* Function to handle this attribute. NODE points to the node to which
4144 tree (*const handler) (tree *node, tree name, tree args,
4178 /* Given a tree node and a string, return nonzero if the tree node is
4232 /* Make a copy of a type node. */
4243 /* Given a ..._TYPE node, calculate the TYPE_SIZE, TYPE_SIZE_UNIT,
4245 node, does nothing except for the first time. */
4296 /* Given a hashcode and a ..._TYPE node (for which the hashcode was made),
4297 return a canonicalized ..._TYPE node, so that duplicates are not made.
4303 /* Given a VAR_DECL, PARM_DECL, RESULT_DECL or FIELD_DECL node,
4305 fields. Call this only once for any given decl node.
4388 by making the last node in X point to Y.
4393 /* Make a new TREE_LIST node from specified PURPOSE, VALUE and CHAIN. */
4398 /* Return the last tree node in a chain. */
4483 the innermost non-arithmetic node. */
5064 /* Process the attributes listed in ATTRIBUTES and install them in *NODE,
5302 /* Compute the number of operands in an expression node NODE. For
5303 tcc_vl_exp nodes like CALL_EXPRs, this is stored in the node itself,
5304 otherwise it is looked up from the node's code. */
5306 tree_operand_length (const_tree node)
5308 if (VL_EXP_CLASS_P (node))
5309 return VL_EXP_OPERAND_LENGTH (node);
5311 return TREE_CODE_LENGTH (TREE_CODE (node));
5334 arguments from CALL_EXPR node EXP. */