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,
641 /* The tree-code says what kind of node it is.
643 #define TREE_CODE(NODE) ((enum tree_code) (NODE)->base.code)
644 #define TREE_SET_CODE(NODE, VALUE) ((NODE)->base.code = (VALUE))
646 /* When checking is enabled, errors will be generated if a tree node
860 #define TREE_CHAIN(NODE) __extension__ \
861 (*({__typeof (NODE) const __t = (NODE); \
868 #define TREE_TYPE(NODE) __extension__ \
869 (*({__typeof (NODE) const __t = (NODE); \
936 #define TREE_CHAIN(NODE) ((NODE)->common.chain)
937 #define TREE_TYPE(NODE) ((NODE)->common.type)
941 #define TREE_BLOCK(NODE) *(tree_block (NODE))
971 /* A simple hash function for an arbitrary tree node. This must not be
973 #define TREE_HASH(NODE) ((size_t) (NODE) & 0777777)
1099 #define COMPLETE_TYPE_P(NODE) (TYPE_SIZE (NODE) != NULL_TREE)
1102 #define VOID_TYPE_P(NODE) (TREE_CODE (NODE) == VOID_TYPE)
1105 #define COMPLETE_OR_VOID_TYPE_P(NODE) \
1106 (COMPLETE_TYPE_P (NODE) || VOID_TYPE_P (NODE))
1109 #define COMPLETE_OR_UNBOUND_ARRAY_TYPE_P(NODE) \
1110 (COMPLETE_TYPE_P (TREE_CODE (NODE) == ARRAY_TYPE ? TREE_TYPE (NODE) : (NODE)))
1120 In a FIELD_DECL node, it means that the programmer is permitted to
1131 #define TREE_ADDRESSABLE(NODE) ((NODE)->base.addressable_flag)
1136 #define CALL_EXPR_TAILCALL(NODE) \
1137 (CALL_EXPR_CHECK(NODE)->base.addressable_flag)
1141 #define CASE_LOW_SEEN(NODE) \
1142 (CASE_LABEL_EXPR_CHECK (NODE)->base.addressable_flag)
1144 #define PREDICT_EXPR_OUTCOME(NODE) \
1145 (PREDICT_EXPR_CHECK(NODE)->base.addressable_flag)
1146 #define PREDICT_EXPR_PREDICTOR(NODE) \
1147 ((enum br_predictor)tree_low_cst (TREE_OPERAND (PREDICT_EXPR_CHECK (NODE), 0), 0))
1152 #define TREE_STATIC(NODE) ((NODE)->base.static_flag)
1155 #define TREE_NO_TRAMPOLINE(NODE) (ADDR_EXPR_CHECK (NODE)->base.static_flag)
1160 #define CLEANUP_EH_ONLY(NODE) ((NODE)->base.static_flag)
1164 #define TRY_CATCH_IS_CLEANUP(NODE) \
1165 (TRY_CATCH_EXPR_CHECK (NODE)->base.static_flag)
1169 #define CASE_HIGH_SEEN(NODE) \
1170 (CASE_LABEL_EXPR_CHECK (NODE)->base.static_flag)
1173 #define CALL_CANNOT_INLINE_P(NODE) (CALL_EXPR_CHECK (NODE)->base.static_flag)
1175 /* In an expr node (usually a conversion) this means the node was made
1176 implicitly and should not lead to any sort of warning. In a decl node,
1180 #define TREE_NO_WARNING(NODE) ((NODE)->base.nowarning_flag)
1184 #define TREE_SYMBOL_REFERENCED(NODE) \
1185 (IDENTIFIER_NODE_CHECK (NODE)->base.static_flag)
1189 #define TYPE_REF_CAN_ALIAS_ALL(NODE) \
1190 (PTR_OR_REF_CHECK (NODE)->base.static_flag)
1193 #define MOVE_NONTEMPORAL(NODE) \
1194 (EXPR_CHECK (NODE)->base.static_flag)
1199 #define TREE_OVERFLOW(NODE) (CST_CHECK (NODE)->base.public_flag)
1202 #define TREE_CONSTANT_OVERFLOW(NODE) TREE_OVERFLOW(NODE)
1214 #define TREE_PUBLIC(NODE) ((NODE)->base.public_flag)
1218 #define TYPE_CACHED_VALUES_P(NODE) (TYPE_CHECK(NODE)->base.public_flag)
1222 #define SAVE_EXPR_RESOLVED_P(NODE) \
1223 (SAVE_EXPR_CHECK (NODE)->base.public_flag)
1227 #define CALL_EXPR_VA_ARG_PACK(NODE) \
1228 (CALL_EXPR_CHECK(NODE)->base.public_flag)
1235 #define TREE_SIDE_EFFECTS(NODE) \
1236 (NON_TYPE_CHECK (NODE)->base.side_effects_flag)
1241 #define FORCED_LABEL(NODE) (LABEL_DECL_CHECK (NODE)->base.side_effects_flag)
1247 On a FUNCTION_DECL node, this means the function does not
1251 In a ..._TYPE node, means this type is volatile-qualified.
1252 But use TYPE_VOLATILE instead of this macro when the node is a type,
1256 #define TREE_THIS_VOLATILE(NODE) ((NODE)->base.volatile_flag)
1258 /* Nonzero means this node will not trap. In an INDIRECT_REF, means
1268 #define TREE_THIS_NOTRAP(NODE) ((NODE)->base.nothrow_flag)
1270 /* In a VAR_DECL, PARM_DECL or FIELD_DECL, or any kind of ..._REF node,
1274 #define TREE_READONLY(NODE) (NON_TYPE_CHECK (NODE)->base.readonly_flag)
1278 #define TREE_CONSTANT(NODE) (NON_TYPE_CHECK (NODE)->base.constant_flag)
1280 /* Nonzero if NODE, a type, has had its sizes gimplified. */
1281 #define TYPE_SIZES_GIMPLIFIED(NODE) \
1282 (TYPE_CHECK (NODE)->base.constant_flag)
1285 #define DECL_UNSIGNED(NODE) \
1286 (DECL_COMMON_CHECK (NODE)->base.unsigned_flag)
1289 #define TYPE_UNSIGNED(NODE) (TYPE_CHECK (NODE)->base.unsigned_flag)
1297 In a BLOCK node, nonzero if reorder_blocks has already seen this block.
1298 In an SSA_NAME node, nonzero if the SSA_NAME occurs in an abnormal
1299 PHI node. */
1300 #define TREE_ASM_WRITTEN(NODE) ((NODE)->base.asm_written_flag)
1303 Nonzero in an expr node means inhibit warning if value is unused.
1307 #define TREE_USED(NODE) ((NODE)->base.used_flag)
1311 #define TREE_NOTHROW(NODE) ((NODE)->base.nothrow_flag)
1315 #define CALL_EXPR_RETURN_SLOT_OPT(NODE) \
1316 (CALL_EXPR_CHECK (NODE)->base.private_flag)
1320 #define DECL_BY_REFERENCE(NODE) (DECL_COMMON_CHECK (NODE)->base.private_flag)
1324 #define CALL_FROM_THUNK_P(NODE) (CALL_EXPR_CHECK (NODE)->base.protected_flag)
1333 In an SSA_NAME node, nonzero if the SSA_NAME node is on the SSA_NAME
1335 #define TYPE_ALIGN_OK(NODE) (TYPE_CHECK (NODE)->base.nothrow_flag)
1338 #define TREE_PRIVATE(NODE) ((NODE)->base.private_flag)
1340 #define TREE_PROTECTED(NODE) ((NODE)->base.protected_flag)
1344 #define TREE_DEPRECATED(NODE) \
1345 ((NODE)->base.deprecated_flag)
1349 #define IDENTIFIER_TRANSPARENT_ALIAS(NODE) \
1350 (IDENTIFIER_NODE_CHECK (NODE)->base.deprecated_flag)
1353 #define TYPE_SATURATING(NODE) ((NODE)->base.saturating_flag)
1355 /* Nonzero in an expression, a decl, or a constant node if the node is
1357 #define EXPR_FOLDED(NODE) ((NODE)->base.expr_folded_flag)
1360 #define TREE_LANG_FLAG_0(NODE) ((NODE)->base.lang_flag_0)
1361 #define TREE_LANG_FLAG_1(NODE) ((NODE)->base.lang_flag_1)
1362 #define TREE_LANG_FLAG_2(NODE) ((NODE)->base.lang_flag_2)
1363 #define TREE_LANG_FLAG_3(NODE) ((NODE)->base.lang_flag_3)
1364 #define TREE_LANG_FLAG_4(NODE) ((NODE)->base.lang_flag_4)
1365 #define TREE_LANG_FLAG_5(NODE) ((NODE)->base.lang_flag_5)
1366 #define TREE_LANG_FLAG_6(NODE) ((NODE)->base.lang_flag_6)
1371 /* In an INTEGER_CST node. These two together make a 2-word integer.
1375 #define TREE_INT_CST(NODE) (INTEGER_CST_CHECK (NODE)->int_cst.int_cst)
1376 #define TREE_INT_CST_LOW(NODE) (TREE_INT_CST (NODE).low)
1377 #define TREE_INT_CST_HIGH(NODE) (TREE_INT_CST (NODE).high)
1397 /* In a REAL_CST node. struct real_value is an opaque entity, with
1402 #define TREE_REAL_CST_PTR(NODE) (REAL_CST_CHECK (NODE)->real_cst.real_cst_ptr)
1403 #define TREE_REAL_CST(NODE) (*TREE_REAL_CST_PTR (NODE))
1411 /* In a FIXED_CST node. */
1414 #define TREE_FIXED_CST_PTR(NODE) (FIXED_CST_CHECK (NODE)->fixed_cst.fixed_cst_ptr)
1415 #define TREE_FIXED_CST(NODE) (*TREE_FIXED_CST_PTR (NODE))
1424 #define TREE_STRING_LENGTH(NODE) (STRING_CST_CHECK (NODE)->string.length)
1425 #define TREE_STRING_POINTER(NODE) \
1426 ((const char *)(STRING_CST_CHECK (NODE)->string.str))
1435 /* In a COMPLEX_CST node. */
1436 #define TREE_REALPART(NODE) (COMPLEX_CST_CHECK (NODE)->complex.real)
1437 #define TREE_IMAGPART(NODE) (COMPLEX_CST_CHECK (NODE)->complex.imag)
1446 /* In a VECTOR_CST node. */
1447 #define TREE_VECTOR_CST_ELTS(NODE) (VECTOR_CST_CHECK (NODE)->vector.elements)
1460 #define IDENTIFIER_LENGTH(NODE) \
1461 (IDENTIFIER_NODE_CHECK (NODE)->identifier.id.len)
1462 #define IDENTIFIER_POINTER(NODE) \
1463 ((const char *) IDENTIFIER_NODE_CHECK (NODE)->identifier.id.str)
1464 #define IDENTIFIER_HASH_VALUE(NODE) \
1465 (IDENTIFIER_NODE_CHECK (NODE)->identifier.id.hash_value)
1470 #define HT_IDENT_TO_GCC_IDENT(NODE) \
1471 ((tree) ((char *) (NODE) - sizeof (struct tree_common)))
1472 #define GCC_IDENT_TO_HT_IDENT(NODE) (&((struct tree_identifier *) (NODE))->id)
1480 /* In a TREE_LIST node. */
1481 #define TREE_PURPOSE(NODE) (TREE_LIST_CHECK (NODE)->list.purpose)
1482 #define TREE_VALUE(NODE) (TREE_LIST_CHECK (NODE)->list.value)
1491 /* In a TREE_VEC node. */
1492 #define TREE_VEC_LENGTH(NODE) (TREE_VEC_CHECK (NODE)->vec.length)
1493 #define TREE_VEC_END(NODE) \
1494 ((void) TREE_VEC_CHECK (NODE), &((NODE)->vec.a[(NODE)->vec.length]))
1496 #define TREE_VEC_ELT(NODE,I) TREE_VEC_ELT_CHECK (NODE, I)
1505 /* In a CONSTRUCTOR node. */
1506 #define CONSTRUCTOR_ELTS(NODE) (CONSTRUCTOR_CHECK (NODE)->constructor.elts)
1507 #define CONSTRUCTOR_ELT(NODE,IDX) \
1508 (VEC_index (constructor_elt, CONSTRUCTOR_ELTS (NODE), IDX))
1509 #define CONSTRUCTOR_NELTS(NODE) (VEC_length (constructor_elt, CONSTRUCTOR_ELTS (NODE)))
1561 /* Nonzero if NODE is an empty statement (NOP_EXPR <0>). */
1562 #define IS_EMPTY_STMT(NODE) (TREE_CODE (NODE) == NOP_EXPR \
1563 && VOID_TYPE_P (TREE_TYPE (NODE)) \
1564 && integer_zerop (TREE_OPERAND (NODE, 0)))
1567 #define TREE_OPERAND_LENGTH(NODE) tree_operand_length (NODE)
1568 #define TREE_OPERAND(NODE, I) TREE_OPERAND_CHECK (NODE, I)
1570 /* In a tcc_vl_exp node, operand 0 is an INT_CST node holding the operand
1575 #define VL_EXP_OPERAND_LENGTH(NODE) \
1576 ((int)TREE_INT_CST_LOW (VL_EXP_CHECK (NODE)->exp.operands[0]))
1578 /* In a LOOP_EXPR node. */
1579 #define LOOP_EXPR_BODY(NODE) TREE_OPERAND_CHECK_CODE (NODE, LOOP_EXPR, 0)
1584 #define EXPR_LOCATION(NODE) (EXPR_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION)
1585 #define SET_EXPR_LOCATION(NODE, LOCUS) EXPR_CHECK ((NODE))->exp.locus = (LOCUS)
1586 #define EXPR_HAS_LOCATION(NODE) (EXPR_LOCATION (NODE) != UNKNOWN_LOCATION)
1587 #define EXPR_LOCUS(NODE) (EXPR_P (NODE) \
1588 ? CONST_CAST (source_location *, &(NODE)->exp.locus) \
1590 #define SET_EXPR_LOCUS(NODE, FROM) set_expr_locus ((NODE), (FROM))
1591 #define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus)
1592 #define EXPR_LINENO(NODE) LOCATION_LINE (EXPR_CHECK (NODE)->exp.locus)
1596 #define CAN_HAVE_LOCATION_P(NODE) (EXPR_P (NODE))
1600 /* In a TARGET_EXPR node. */
1601 #define TARGET_EXPR_SLOT(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 0)
1602 #define TARGET_EXPR_INITIAL(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 1)
1603 #define TARGET_EXPR_CLEANUP(NODE) TREE_OPERAND_CHECK_CODE (NODE, TARGET_EXPR, 2)
1607 #define DECL_EXPR_DECL(NODE) TREE_OPERAND (DECL_EXPR_CHECK (NODE), 0)
1609 #define EXIT_EXPR_COND(NODE) TREE_OPERAND (EXIT_EXPR_CHECK (NODE), 0)
1614 #define SWITCH_COND(NODE) TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 0)
1615 #define SWITCH_BODY(NODE) TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 1)
1616 #define SWITCH_LABELS(NODE) TREE_OPERAND (SWITCH_EXPR_CHECK (NODE), 2)
1620 #define CASE_LOW(NODE) TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 0)
1621 #define CASE_HIGH(NODE) TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 1)
1622 #define CASE_LABEL(NODE) TREE_OPERAND (CASE_LABEL_EXPR_CHECK (NODE), 2)
1625 #define TMR_SYMBOL(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 0))
1626 #define TMR_BASE(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 1))
1627 #define TMR_INDEX(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 2))
1628 #define TMR_STEP(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 3))
1629 #define TMR_OFFSET(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 4))
1630 #define TMR_ORIGINAL(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 5))
1631 #define TMR_TAG(NODE) (TREE_OPERAND (TARGET_MEM_REF_CHECK (NODE), 6))
1634 #define BIND_EXPR_VARS(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 0))
1635 #define BIND_EXPR_BODY(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 1))
1636 #define BIND_EXPR_BLOCK(NODE) (TREE_OPERAND (BIND_EXPR_CHECK (NODE), 2))
1640 #define GOTO_DESTINATION(NODE) TREE_OPERAND ((NODE), 0)
1646 #define ASM_STRING(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 0)
1647 #define ASM_OUTPUTS(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 1)
1648 #define ASM_INPUTS(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 2)
1649 #define ASM_CLOBBERS(NODE) TREE_OPERAND (ASM_EXPR_CHECK (NODE), 3)
1652 #define ASM_INPUT_P(NODE) (ASM_EXPR_CHECK (NODE)->base.static_flag)
1653 #define ASM_VOLATILE_P(NODE) (ASM_EXPR_CHECK (NODE)->base.public_flag)
1656 #define COND_EXPR_COND(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 0))
1657 #define COND_EXPR_THEN(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 1))
1658 #define COND_EXPR_ELSE(NODE) (TREE_OPERAND (COND_EXPR_CHECK (NODE), 2))
1661 #define CHREC_VAR(NODE) TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 0)
1662 #define CHREC_LEFT(NODE) TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 1)
1663 #define CHREC_RIGHT(NODE) TREE_OPERAND (POLYNOMIAL_CHREC_CHECK (NODE), 2)
1664 #define CHREC_VARIABLE(NODE) TREE_INT_CST_LOW (CHREC_VAR (NODE))
1668 #define LABEL_EXPR_LABEL(NODE) TREE_OPERAND (LABEL_EXPR_CHECK (NODE), 0)
1674 #define CATCH_TYPES(NODE) TREE_OPERAND (CATCH_EXPR_CHECK (NODE), 0)
1675 #define CATCH_BODY(NODE) TREE_OPERAND (CATCH_EXPR_CHECK (NODE), 1)
1678 #define EH_FILTER_TYPES(NODE) TREE_OPERAND (EH_FILTER_EXPR_CHECK (NODE), 0)
1679 #define EH_FILTER_FAILURE(NODE) TREE_OPERAND (EH_FILTER_EXPR_CHECK (NODE), 1)
1680 #define EH_FILTER_MUST_NOT_THROW(NODE) \
1681 (EH_FILTER_EXPR_CHECK (NODE)->base.static_flag)
1684 #define CHANGE_DYNAMIC_TYPE_NEW_TYPE(NODE) \
1685 TREE_OPERAND (CHANGE_DYNAMIC_TYPE_EXPR_CHECK (NODE), 0)
1686 #define CHANGE_DYNAMIC_TYPE_LOCATION(NODE) \
1687 TREE_OPERAND (CHANGE_DYNAMIC_TYPE_EXPR_CHECK (NODE), 1)
1690 #define OBJ_TYPE_REF_EXPR(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 0)
1691 #define OBJ_TYPE_REF_OBJECT(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 1)
1692 #define OBJ_TYPE_REF_TOKEN(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 2)
1695 #define ASSERT_EXPR_VAR(NODE) TREE_OPERAND (ASSERT_EXPR_CHECK (NODE), 0)
1696 #define ASSERT_EXPR_COND(NODE) TREE_OPERAND (ASSERT_EXPR_CHECK (NODE), 1)
1700 #define CALL_EXPR_FN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 1)
1701 #define CALL_EXPR_STATIC_CHAIN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 2)
1702 #define CALL_EXPR_ARGS(NODE) call_expr_arglist (NODE)
1703 #define CALL_EXPR_ARG(NODE, I) TREE_OPERAND (CALL_EXPR_CHECK (NODE), (I) + 3)
1704 #define call_expr_nargs(NODE) (VL_EXP_OPERAND_LENGTH(NODE) - 3)
1706 /* CALL_EXPR_ARGP returns a pointer to the argument vector for NODE.
1707 We can't use &CALL_EXPR_ARG (NODE, 0) because that will complain if
1712 #define CALL_EXPR_ARGP(NODE) \
1713 (&(TREE_OPERAND (CALL_EXPR_CHECK (NODE), 0)) + 3)
1717 #define OMP_BODY(NODE) \
1718 TREE_OPERAND (TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_CRITICAL), 0)
1719 #define OMP_CLAUSES(NODE) \
1720 TREE_OPERAND (TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_SINGLE), 1)
1722 #define OMP_PARALLEL_BODY(NODE) TREE_OPERAND (OMP_PARALLEL_CHECK (NODE), 0)
1723 #define OMP_PARALLEL_CLAUSES(NODE) TREE_OPERAND (OMP_PARALLEL_CHECK (NODE), 1)
1725 #define OMP_TASK_BODY(NODE) TREE_OPERAND (OMP_TASK_CHECK (NODE), 0)
1726 #define OMP_TASK_CLAUSES(NODE) TREE_OPERAND (OMP_TASK_CHECK (NODE), 1)
1728 #define OMP_TASKREG_CHECK(NODE) TREE_RANGE_CHECK (NODE, OMP_PARALLEL, OMP_TASK)
1729 #define OMP_TASKREG_BODY(NODE) TREE_OPERAND (OMP_TASKREG_CHECK (NODE), 0)
1730 #define OMP_TASKREG_CLAUSES(NODE) TREE_OPERAND (OMP_TASKREG_CHECK (NODE), 1)
1732 #define OMP_FOR_BODY(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 0)
1733 #define OMP_FOR_CLAUSES(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 1)
1734 #define OMP_FOR_INIT(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 2)
1735 #define OMP_FOR_COND(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 3)
1736 #define OMP_FOR_INCR(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 4)
1737 #define OMP_FOR_PRE_BODY(NODE) TREE_OPERAND (OMP_FOR_CHECK (NODE), 5)
1739 #define OMP_SECTIONS_BODY(NODE) TREE_OPERAND (OMP_SECTIONS_CHECK (NODE), 0)
1740 #define OMP_SECTIONS_CLAUSES(NODE) TREE_OPERAND (OMP_SECTIONS_CHECK (NODE), 1)
1742 #define OMP_SECTION_BODY(NODE) TREE_OPERAND (OMP_SECTION_CHECK (NODE), 0)
1744 #define OMP_SINGLE_BODY(NODE) TREE_OPERAND (OMP_SINGLE_CHECK (NODE), 0)
1745 #define OMP_SINGLE_CLAUSES(NODE) TREE_OPERAND (OMP_SINGLE_CHECK (NODE), 1)
1747 #define OMP_MASTER_BODY(NODE) TREE_OPERAND (OMP_MASTER_CHECK (NODE), 0)
1749 #define OMP_ORDERED_BODY(NODE) TREE_OPERAND (OMP_ORDERED_CHECK (NODE), 0)
1751 #define OMP_CRITICAL_BODY(NODE) TREE_OPERAND (OMP_CRITICAL_CHECK (NODE), 0)
1752 #define OMP_CRITICAL_NAME(NODE) TREE_OPERAND (OMP_CRITICAL_CHECK (NODE), 1)
1754 #define OMP_CLAUSE_CHAIN(NODE) TREE_CHAIN (OMP_CLAUSE_CHECK (NODE))
1755 #define OMP_CLAUSE_DECL(NODE) \
1756 OMP_CLAUSE_OPERAND (OMP_CLAUSE_RANGE_CHECK (OMP_CLAUSE_CHECK (NODE), \
1762 #define OMP_SECTION_LAST(NODE) \
1763 (OMP_SECTION_CHECK (NODE)->base.private_flag)
1767 #define OMP_PARALLEL_COMBINED(NODE) \
1768 (OMP_PARALLEL_CHECK (NODE)->base.private_flag)
1773 #define OMP_CLAUSE_PRIVATE_DEBUG(NODE) \
1774 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PRIVATE)->base.public_flag)
1778 #define OMP_CLAUSE_PRIVATE_OUTER_REF(NODE) \
1779 TREE_PRIVATE (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_PRIVATE))
1783 #define OMP_CLAUSE_LASTPRIVATE_FIRSTPRIVATE(NODE) \
1784 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_LASTPRIVATE)->base.public_flag)
1785 #define OMP_CLAUSE_LASTPRIVATE_STMT(NODE) \
1786 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, \
1789 #define OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ(NODE) \
1790 (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_init
1792 #define OMP_CLAUSE_IF_EXPR(NODE) \
1793 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_IF), 0)
1794 #define OMP_CLAUSE_NUM_THREADS_EXPR(NODE) \
1795 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_NUM_THREADS),0)
1796 #define OMP_CLAUSE_SCHEDULE_CHUNK_EXPR(NODE) \
1797 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SCHEDULE), 0)
1799 #define OMP_CLAUSE_COLLAPSE_EXPR(NODE) \
1800 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 0)
1801 #define OMP_CLAUSE_COLLAPSE_ITERVAR(NODE) \
1802 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 1)
1803 #define OMP_CLAUSE_COLLAPSE_COUNT(NODE) \
1804 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_COLLAPSE), 2)
1806 #define OMP_CLAUSE_REDUCTION_CODE(NODE) \
1807 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION)->omp_clause.subcode.reduction_code)
1808 NODE) \
1809 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 1)
1810 #define OMP_CLAUSE_REDUCTION_MERGE(NODE) \
1811 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 2)
1812 #define OMP_CLAUSE_REDUCTION_GIMPLE_INIT(NODE) \
1813 (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_init
1814 #define OMP_CLAUSE_REDUCTION_GIMPLE_MERGE(NODE) \
1815 (OMP_CLAUSE_CHECK (NODE))->omp_clause.gimple_reduction_merge
1816 #define OMP_CLAUSE_REDUCTION_PLACEHOLDER(NODE) \
1817 OMP_CLAUSE_OPERAND (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_REDUCTION), 3)
1828 #define OMP_CLAUSE_SCHEDULE_KIND(NODE) \
1829 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_SCHEDULE)->omp_clause.subcode.schedule_kind)
1840 #define OMP_CLAUSE_DEFAULT_KIND(NODE) \
1841 (OMP_CLAUSE_SUBCODE_CHECK (NODE, OMP_CLAUSE_DEFAULT)->omp_clause.subcode.default_kind)
1858 #define SSA_NAME_VAR(NODE) SSA_NAME_CHECK (NODE)->ssa_name.var
1861 #define SSA_NAME_DEF_STMT(NODE) SSA_NAME_CHECK (NODE)->ssa_name.def_stmt
1865 #define SSA_NAME_VERSION(NODE) SSA_NAME_CHECK (NODE)->ssa_name.version
1870 #define SSA_NAME_OCCURS_IN_ABNORMAL_PHI(NODE) \
1871 SSA_NAME_CHECK (NODE)->base.asm_written_flag
1876 #define SSA_NAME_IN_FREE_LIST(NODE) \
1877 SSA_NAME_CHECK (NODE)->base.nothrow_flag
1884 #define SSA_NAME_IS_DEFAULT_DEF(NODE) \
1885 SSA_NAME_CHECK (NODE)->base.default_def_flag
1917 #define SSA_NAME_IMM_USE_NODE(NODE) SSA_NAME_CHECK (NODE)->ssa_name.imm_uses
1958 #define OMP_CLAUSE_CODE(NODE) \
1959 (OMP_CLAUSE_CHECK (NODE))->omp_clause.code
1961 #define OMP_CLAUSE_SET_CODE(NODE, CODE) \
1962 ((OMP_CLAUSE_CHECK (NODE))->omp_clause.code = (CODE))
1964 #define OMP_CLAUSE_CODE(NODE) \
1965 (OMP_CLAUSE_CHECK (NODE))->omp_clause.code
1967 #define OMP_CLAUSE_OPERAND(NODE, I) \
1968 OMP_CLAUSE_ELT_CHECK (NODE, I)
1992 /* In a BLOCK node. */
1993 #define BLOCK_VARS(NODE) (BLOCK_CHECK (NODE)->block.vars)
1994 #define BLOCK_NONLOCALIZED_VARS(NODE) (BLOCK_CHECK (NODE)->block.nonlocalized_vars)
1995 #define BLOCK_NUM_NONLOCALIZED_VARS(NODE) VEC_length (tree, BLOCK_NONLOCALIZED_VARS (NODE))
1996 #define BLOCK_NONLOCALIZED_VAR(NODE,N) VEC_index (tree, BLOCK_NONLOCALIZED_VARS (NODE), N)
1997 #define BLOCK_SUBBLOCKS(NODE) (BLOCK_CHECK (NODE)->block.subblocks)
1998 #define BLOCK_SUPERCONTEXT(NODE) (BLOCK_CHECK (NODE)->block.supercontext)
2001 #define BLOCK_CHAIN(NODE) TREE_CHAIN (BLOCK_CHECK (NODE))
2002 #define BLOCK_ABSTRACT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.abstract_origin)
2003 #define BLOCK_ABSTRACT(NODE) (BLOCK_CHECK (NODE)->block.abstract_flag)
2008 #define BLOCK_NUMBER(NODE) (BLOCK_CHECK (NODE)->block.block_num)
2032 #define BLOCK_FRAGMENT_ORIGIN(NODE) (BLOCK_CHECK (NODE)->block.fragment_origin)
2033 #define BLOCK_FRAGMENT_CHAIN(NODE) (BLOCK_CHECK (NODE)->block.fragment_chain)
2039 #define BLOCK_SOURCE_LOCATION(NODE) (BLOCK_CHECK (NODE)->block.locus)
2068 Each macro must check to ensure the tree node is of the proper kind of
2072 #define TYPE_UID(NODE) (TYPE_CHECK (NODE)->type.uid)
2073 #define TYPE_SIZE(NODE) (TYPE_CHECK (NODE)->type.size)
2074 #define TYPE_SIZE_UNIT(NODE) (TYPE_CHECK (NODE)->type.size_unit)
2075 #define TYPE_VALUES(NODE) (ENUMERAL_TYPE_CHECK (NODE)->type.values)
2076 #define TYPE_DOMAIN(NODE) (ARRAY_TYPE_CHECK (NODE)->type.values)
2077 #define TYPE_FIELDS(NODE) (RECORD_OR_UNION_CHECK (NODE)->type.values)
2078 #define TYPE_CACHED_VALUES(NODE) (TYPE_CHECK(NODE)->type.values)
2079 #define TYPE_ORIG_SIZE_TYPE(NODE) \
2080 (INTEGER_TYPE_CHECK (NODE)->type.values \
2081 ? TREE_TYPE ((NODE)->type.values) : NULL_TREE)
2082 #define TYPE_METHODS(NODE) (RECORD_OR_UNION_CHECK (NODE)->type.maxval)
2083 #define TYPE_VFIELD(NODE) (RECORD_OR_UNION_CHECK (NODE)->type.minval)
2084 #define TYPE_ARG_TYPES(NODE) (FUNC_OR_METHOD_CHECK (NODE)->type.values)
2085 #define TYPE_METHOD_BASETYPE(NODE) (FUNC_OR_METHOD_CHECK (NODE)->type.maxval)
2086 #define TYPE_OFFSET_BASETYPE(NODE) (OFFSET_TYPE_CHECK (NODE)->type.maxval)
2087 #define TYPE_POINTER_TO(NODE) (TYPE_CHECK (NODE)->type.pointer_to)
2088 #define TYPE_REFERENCE_TO(NODE) (TYPE_CHECK (NODE)->type.reference_to)
2089 #define TYPE_NEXT_PTR_TO(NODE) (POINTER_TYPE_CHECK (NODE)->type.minval)
2090 #define TYPE_NEXT_REF_TO(NODE) (REFERENCE_TYPE_CHECK (NODE)->type.minval)
2091 #define TYPE_MIN_VALUE(NODE) (NUMERICAL_TYPE_CHECK (NODE)->type.minval)
2092 #define TYPE_MAX_VALUE(NODE) (NUMERICAL_TYPE_CHECK (NODE)->type.maxval)
2093 #define TYPE_PRECISION(NODE) (TYPE_CHECK (NODE)->type.precision)
2094 #define TYPE_SYMTAB_ADDRESS(NODE) (TYPE_CHECK (NODE)->type.symtab.address)
2095 #define TYPE_SYMTAB_POINTER(NODE) (TYPE_CHECK (NODE)->type.symtab.pointer)
2096 #define TYPE_SYMTAB_DIE(NODE) (TYPE_CHECK (NODE)->type.symtab.die)
2097 #define TYPE_NAME(NODE) (TYPE_CHECK (NODE)->type.name)
2098 #define TYPE_NEXT_VARIANT(NODE) (TYPE_CHECK (NODE)->type.next_variant)
2099 #define TYPE_MAIN_VARIANT(NODE) (TYPE_CHECK (NODE)->type.main_variant)
2100 #define TYPE_CONTEXT(NODE) (TYPE_CHECK (NODE)->type.context)
2104 #define TYPE_MODE(NODE) \
2105 (TREE_CODE (TYPE_CHECK (NODE)) == VECTOR_TYPE \
2106 ? vector_type_mode (NODE) : (NODE)->type.mode)
2107 #define SET_TYPE_MODE(NODE, MODE) \
2108 (TYPE_CHECK (NODE)->type.mode = (MODE))
2110 /* The "canonical" type for this type node, which can be used to
2119 #define TYPE_CANONICAL(NODE) (TYPE_CHECK (NODE)->type.canonical)
2120 /* Indicates that the type node requires structural equality
2125 node. */
2126 #define TYPE_STRUCTURAL_EQUALITY_P(NODE) (TYPE_CANONICAL (NODE) == NULL_TREE)
2128 type node requires structural equality. */
2129 #define SET_TYPE_STRUCTURAL_EQUALITY(NODE) (TYPE_CANONICAL (NODE) = NULL_TREE)
2130 #define TYPE_LANG_SPECIFIC(NODE) (TYPE_CHECK (NODE)->type.lang_specific)
2131 #define TYPE_IBIT(NODE) (GET_MODE_IBIT (TYPE_MODE (NODE)))
2132 #define TYPE_FBIT(NODE) (GET_MODE_FBIT (TYPE_MODE (NODE)))
2134 /* For a VECTOR_TYPE node, this describes a different type which is emitted
2137 #define TYPE_DEBUG_REPRESENTATION_TYPE(NODE) (VECTOR_TYPE_CHECK (NODE)->type.values)
2141 #define TYPE_BINFO(NODE) (RECORD_OR_UNION_CHECK(NODE)->type.binfo)
2144 #define TYPE_LANG_SLOT_1(NODE) (NOT_RECORD_OR_UNION_CHECK(NODE)->type.binfo)
2151 #define TYPE_ALIAS_SET(NODE) (TYPE_CHECK (NODE)->type.alias_set)
2155 #define TYPE_ALIAS_SET_KNOWN_P(NODE) (TYPE_CHECK (NODE)->type.alias_set != -1)
2159 #define TYPE_ATTRIBUTES(NODE) (TYPE_CHECK (NODE)->type.attributes)
2163 #define TYPE_ALIGN(NODE) (TYPE_CHECK (NODE)->type.align)
2167 #define TYPE_USER_ALIGN(NODE) (TYPE_CHECK (NODE)->type.user_align)
2169 /* The alignment for NODE, in bytes. */
2170 #define TYPE_ALIGN_UNIT(NODE) (TYPE_ALIGN (NODE) / BITS_PER_UNIT)
2175 type node. You then set the TYPE_STUB_DECL field of the type node
2176 to point back at the TYPE_DECL node. This allows the debug routines
2179 #define TYPE_STUB_DECL(NODE) TREE_CHAIN (NODE)
2184 #define TYPE_NO_FORCE_BLK(NODE) (TYPE_CHECK (NODE)->type.no_force_blk_flag)
2194 #define TYPE_IS_SIZETYPE(NODE) \
2195 (INTEGER_TYPE_CHECK (NODE)->type.no_force_blk_flag)
2198 #define TYPE_VOLATILE(NODE) (TYPE_CHECK (NODE)->base.volatile_flag)
2201 #define TYPE_READONLY(NODE) (TYPE_CHECK (NODE)->base.readonly_flag)
2205 #define TYPE_RESTRICT(NODE) (TYPE_CHECK (NODE)->type.restrict_flag)
2217 #define TYPE_QUALS(NODE) \
2218 ((TYPE_READONLY (NODE) * TYPE_QUAL_CONST) \
2219 | (TYPE_VOLATILE (NODE) * TYPE_QUAL_VOLATILE) \
2220 | (TYPE_RESTRICT (NODE) * TYPE_QUAL_RESTRICT))
2223 #define TYPE_LANG_FLAG_0(NODE) (TYPE_CHECK (NODE)->type.lang_flag_0)
2224 #define TYPE_LANG_FLAG_1(NODE) (TYPE_CHECK (NODE)->type.lang_flag_1)
2225 #define TYPE_LANG_FLAG_2(NODE) (TYPE_CHECK (NODE)->type.lang_flag_2)
2226 #define TYPE_LANG_FLAG_3(NODE) (TYPE_CHECK (NODE)->type.lang_flag_3)
2227 #define TYPE_LANG_FLAG_4(NODE) (TYPE_CHECK (NODE)->type.lang_flag_4)
2228 #define TYPE_LANG_FLAG_5(NODE) (TYPE_CHECK (NODE)->type.lang_flag_5)
2229 #define TYPE_LANG_FLAG_6(NODE) (TYPE_CHECK (NODE)->type.lang_flag_6)
2233 #define TREE_VISITED(NODE) ((NODE)->base.visited)
2238 #define TYPE_STRING_FLAG(NODE) (TYPE_CHECK (NODE)->type.string_flag)
2257 #define TYPE_NEEDS_CONSTRUCTING(NODE) \
2258 (TYPE_CHECK (NODE)->type.needs_constructing_flag)
2262 #define TYPE_TRANSPARENT_UNION(NODE) \
2263 (UNION_TYPE_CHECK (NODE)->type.transparent_union_flag)
2268 #define TYPE_NONALIASED_COMPONENT(NODE) \
2269 (ARRAY_TYPE_CHECK (NODE)->type.transparent_union_flag)
2273 #define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->type.packed_flag)
2278 #define TYPE_CONTAINS_PLACEHOLDER_INTERNAL(NODE) \
2279 (TYPE_CHECK (NODE)->type.contains_placeholder_bits)
2340 object to describe it. The binfo object is a TREE_VEC node.
2353 #define BINFO_VIRTUAL_P(NODE) (TREE_BINFO_CHECK (NODE)->base.static_flag)
2356 #define BINFO_MARKED(NODE) TREE_LANG_FLAG_0(TREE_BINFO_CHECK(NODE))
2357 #define BINFO_FLAG_1(NODE) TREE_LANG_FLAG_1(TREE_BINFO_CHECK(NODE))
2358 #define BINFO_FLAG_2(NODE) TREE_LANG_FLAG_2(TREE_BINFO_CHECK(NODE))
2359 #define BINFO_FLAG_3(NODE) TREE_LANG_FLAG_3(TREE_BINFO_CHECK(NODE))
2360 #define BINFO_FLAG_4(NODE) TREE_LANG_FLAG_4(TREE_BINFO_CHECK(NODE))
2361 #define BINFO_FLAG_5(NODE) TREE_LANG_FLAG_5(TREE_BINFO_CHECK(NODE))
2362 #define BINFO_FLAG_6(NODE) TREE_LANG_FLAG_6(TREE_BINFO_CHECK(NODE))
2364 /* The actual data type node being inherited in this basetype. */
2365 #define BINFO_TYPE(NODE) TREE_TYPE (TREE_BINFO_CHECK(NODE))
2373 #define BINFO_OFFSET(NODE) (TREE_BINFO_CHECK(NODE)->binfo.offset)
2374 #define BINFO_OFFSET_ZEROP(NODE) (integer_zerop (BINFO_OFFSET (NODE)))
2380 #define BINFO_VTABLE(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtable)
2385 #define BINFO_VIRTUALS(NODE) (TREE_BINFO_CHECK(NODE)->binfo.virtuals)
2393 #define BINFO_BASE_BINFOS(NODE) (&TREE_BINFO_CHECK(NODE)->binfo.base_binfos)
2395 /* The number of basetypes for NODE. */
2396 #define BINFO_N_BASE_BINFOS(NODE) (VEC_length (tree, BINFO_BASE_BINFOS (NODE)))
2399 #define BINFO_BASE_BINFO(NODE,N) \
2400 (VEC_index (tree, BINFO_BASE_BINFOS (NODE), (N)))
2401 #define BINFO_BASE_ITERATE(NODE,N,B) \
2402 (VEC_iterate (tree, BINFO_BASE_BINFOS (NODE), (N), (B)))
2403 #define BINFO_BASE_APPEND(NODE,T) \
2404 (VEC_quick_push (tree, BINFO_BASE_BINFOS (NODE), (T)))
2411 #define BINFO_VPTR_FIELD(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vptr_field)
2416 #define BINFO_BASE_ACCESSES(NODE) (TREE_BINFO_CHECK(NODE)->binfo.base_accesses)
2418 #define BINFO_BASE_ACCESS(NODE,N) \
2419 VEC_index (tree, BINFO_BASE_ACCESSES (NODE), (N))
2420 #define BINFO_BASE_ACCESS_APPEND(NODE,T) \
2421 VEC_quick_push (tree, BINFO_BASE_ACCESSES (NODE), (T))
2425 #define BINFO_SUBVTT_INDEX(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtt_subvtt)
2429 #define BINFO_VPTR_INDEX(NODE) (TREE_BINFO_CHECK(NODE)->binfo.vtt_vptr)
2435 #define BINFO_INHERITANCE_CHAIN(NODE) \
2436 (TREE_BINFO_CHECK(NODE)->binfo.inheritance)
2491 #define DECL_NAME(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.name)
2493 /* Every ..._DECL node gets a unique number. */
2494 #define DECL_UID(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.uid)
2500 #define DECL_SOURCE_LOCATION(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.locus)
2501 #define DECL_SOURCE_FILE(NODE) LOCATION_FILE (DECL_SOURCE_LOCATION (NODE))
2502 #define DECL_SOURCE_LINE(NODE) LOCATION_LINE (DECL_SOURCE_LOCATION (NODE))
2507 QUAL_UNION_TYPE node that the field is a member of. For VAR_DECL,
2513 #define DECL_CONTEXT(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.context)
2514 #define DECL_FIELD_CONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->decl_minimal.context)
2551 #define MTAG_GLOBAL(NODE) (TREE_MEMORY_TAG_CHECK (NODE)->mtag.is_global)
2552 #define MTAG_ALIASES(NODE) (TREE_MEMORY_TAG_CHECK (NODE)->mtag.aliases)
2565 #define MPT_SYMBOLS(NODE) (MEMORY_PARTITION_TAG_CHECK (NODE)->mpt.symbols)
2568 /* For any sort of a ..._DECL node, this points to the original (abstract)
2569 decl node which this decl is an instance of, or else it is NULL indicating
2573 #define DECL_ABSTRACT_ORIGIN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_origin)
2575 /* Like DECL_ABSTRACT_ORIGIN, but returns NODE if there's no abstract
2577 #define DECL_ORIGIN(NODE) \
2578 (DECL_ABSTRACT_ORIGIN (NODE) ? DECL_ABSTRACT_ORIGIN (NODE) : (NODE))
2580 /* Nonzero for any sort of ..._DECL node means this decl node represents an
2584 #define DECL_FROM_INLINE(NODE) (DECL_ABSTRACT_ORIGIN (NODE) != NULL_TREE \
2585 && DECL_ABSTRACT_ORIGIN (NODE) != (NODE))
2588 #define DECL_ATTRIBUTES(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.attributes)
2600 #define DECL_INITIAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.initial)
2604 #define DECL_SIZE(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.size)
2606 #define DECL_SIZE_UNIT(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.size_unit)
2608 #define DECL_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.align)
2609 /* The alignment of NODE, in bytes. */
2610 #define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT)
2613 #define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.user_align)
2617 #define DECL_MODE(NODENODE)->decl_common.mode)
2623 #define DECL_FUNCTION_CODE(NODE) \
2624 (FUNCTION_DECL_CHECK (NODE)->function_decl.function_code)
2625 #define DECL_DEBUG_EXPR_IS_FROM(NODE) \
2626 (DECL_COMMON_CHECK (NODE)->decl_common.debug_expr_is_from)
2628 /* Nonzero for a given ..._DECL node means that the name of this node should
2630 #define DECL_IGNORED_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag)
2632 /* Nonzero for a given ..._DECL node means that this node represents an
2638 #define DECL_ABSTRACT(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_flag)
2641 #define DECL_LANG_SPECIFIC(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_specific)
2645 this does not necessarily imply the entity represented by NODE
2650 #define DECL_EXTERNAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.decl_flag_2)
2659 #define DECL_NONLOCAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.nonlocal_flag)
2664 #define DECL_VIRTUAL_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.virtual_flag)
2667 #define DECL_ARTIFICIAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.artificial_flag)
2670 #define DECL_LANG_FLAG_0(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_0)
2671 #define DECL_LANG_FLAG_1(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_1)
2672 #define DECL_LANG_FLAG_2(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_2)
2673 #define DECL_LANG_FLAG_3(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_3)
2674 #define DECL_LANG_FLAG_4(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_4)
2675 #define DECL_LANG_FLAG_5(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_5)
2676 #define DECL_LANG_FLAG_6(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_6)
2677 #define DECL_LANG_FLAG_7(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_7)
2682 #define DECL_POINTER_ALIAS_SET(NODE) \
2683 (DECL_COMMON_CHECK (NODE)->decl_common.pointer_alias_set)
2686 #define DECL_POINTER_ALIAS_SET_KNOWN_P(NODE) \
2687 (DECL_POINTER_ALIAS_SET (NODE) != - 1)
2779 #define DECL_HAS_VALUE_EXPR_P(NODE) \
2780 (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_3)
2781 #define DECL_VALUE_EXPR(NODE) \
2782 (decl_value_expr_lookup (DECL_WRTL_CHECK (NODE)))
2783 #define SET_DECL_VALUE_EXPR(NODE, VAL) \
2784 (decl_value_expr_insert (DECL_WRTL_CHECK (NODE), VAL))
2789 #define DECL_RTL(NODE) \
2790 (DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl \
2791 ? (NODE)->decl_with_rtl.rtl \
2792 : (make_decl_rtl (NODE), (NODE)->decl_with_rtl.rtl))
2794 /* Set the DECL_RTL for NODE to RTL. */
2795 #define SET_DECL_RTL(NODE, RTL) set_decl_rtl (NODE, RTL)
2797 /* Returns nonzero if NODE is a tree node that can contain RTL. */
2798 #define HAS_RTL_P(NODE) (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WRTL))
2800 /* Returns nonzero if the DECL_RTL for NODE has already been set. */
2801 #define DECL_RTL_SET_P(NODE) (HAS_RTL_P (NODE) && DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl != NULL)
2808 /* The DECL_RTL for NODE, if it is set, or NULL, if it is not set. */
2809 #define DECL_RTL_IF_SET(NODE) (DECL_RTL_SET_P (NODE) ? DECL_RTL (NODE) : NULL)
2812 #define DECL_REGISTER(NODE) (DECL_WRTL_CHECK (NODE)->decl_common.decl_flag_0)
2823 #define DECL_FIELD_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.offset)
2829 #define DECL_FIELD_BIT_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_offset)
2834 #define DECL_BIT_FIELD_TYPE(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_field_type)
2838 #define DECL_QUALIFIER(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.qualifier)
2844 #define DECL_OFFSET_ALIGN(NODE) \
2845 (((unsigned HOST_WIDE_INT)1) << FIELD_DECL_CHECK (NODE)->decl_common.off_align)
2847 /* Specify that DECL_ALIGN(NODE) is a multiple of X. */
2848 #define SET_DECL_OFFSET_ALIGN(NODE, X) \
2849 (FIELD_DECL_CHECK (NODE)->decl_common.off_align = exact_log2 ((X) & -(X)))
2856 #define DECL_FCONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.fcontext)
2859 #define DECL_PACKED(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_1)
2863 #define DECL_BIT_FIELD(NODE) (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_2)
2880 #define DECL_NONADDRESSABLE_P(NODE) \
2881 (FIELD_DECL_CHECK (NODE)->decl_common.decl_flag_3)
2898 #define LABEL_DECL_UID(NODE) \
2899 (LABEL_DECL_CHECK (NODE)->decl_common.pointer_alias_set)
2903 #define DECL_ERROR_ISSUED(NODE) (LABEL_DECL_CHECK (NODE)->decl_common.decl_flag_0)
2922 #define DECL_ARG_TYPE(NODE) (PARM_DECL_CHECK (NODE)->decl_common.initial)
2926 #define DECL_INCOMING_RTL(NODE) (PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl)
2937 #define DECL_SEEN_IN_BIND_EXPR_P(NODE) \
2938 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.seen_in_bind_expr)
2942 #define DECL_DEFER_OUTPUT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.defer_output)
2944 /* Nonzero for a given ..._DECL node means that no warnings should be
2945 generated just because this node is unused. */
2946 #define DECL_IN_SYSTEM_HEADER(NODE) \
2947 (in_system_header_at (DECL_SOURCE_LOCATION (NODE)))
2950 #define DECL_WEAK(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.weak_flag)
2958 #define DECL_DLLIMPORT_P(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.dllimport_flag)
2965 #define DECL_BASED_ON_RESTRICT_P(NODE) \
2966 (VAR_DECL_CHECK (NODE)->decl_with_vis.based_on_restrict_p)
2967 #define DECL_GET_RESTRICT_BASE(NODE) \
2968 (decl_restrict_base_lookup (VAR_DECL_CHECK (NODE)))
2969 #define SET_DECL_RESTRICT_BASE(NODE, VAL) \
2970 (decl_restrict_base_insert (VAR_DECL_CHECK (NODE), (VAL)))
2984 #define DECL_COMDAT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_flag)
3003 #define DECL_REPLACEABLE_P(NODE) \
3004 (!DECL_COMDAT (NODE) && !targetm.binds_local_p (NODE))
3009 #define DECL_ASSEMBLER_NAME(NODE) decl_assembler_name (NODE)
3011 /* Return true if NODE is a NODE that can contain a DECL_ASSEMBLER_NAME.
3013 #define HAS_DECL_ASSEMBLER_NAME_P(NODE) \
3014 (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WITH_VIS))
3016 /* Returns nonzero if the DECL_ASSEMBLER_NAME for NODE has been set. If zero,
3017 the NODE might still have a DECL_ASSEMBLER_NAME -- it just hasn't been set
3019 #define DECL_ASSEMBLER_NAME_SET_P(NODE) \
3020 (HAS_DECL_ASSEMBLER_NAME_P (NODE) && DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name != NULL_TREE)
3022 /* Set the DECL_ASSEMBLER_NAME for NODE to NAME. */
3023 #define SET_DECL_ASSEMBLER_NAME(NODE, NAME) \
3024 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name = (NAME))
3043 #define DECL_SECTION_NAME(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.section_name)
3046 #define DECL_VISIBILITY(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility)
3050 #define DECL_VISIBILITY_SPECIFIED(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility_specified)
3054 #define DECL_ONE_ONLY(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.one_only)
3091 #define DECL_IN_TEXT_SECTION(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.in_text_section)
3093 /* Nonzero for a given ..._DECL node means that this node should be
3096 #define DECL_COMMON(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.common_flag)
3100 #define DECL_HARD_REGISTER(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.hard_register)
3107 #define DECL_DEBUG_EXPR(NODE) \
3108 (decl_debug_expr_lookup (VAR_DECL_CHECK (NODE)))
3110 #define SET_DECL_DEBUG_EXPR(NODE, VAL) \
3111 (decl_debug_expr_insert (VAR_DECL_CHECK (NODE), VAL))
3124 #define DECL_HAS_INIT_PRIORITY_P(NODE) \
3125 (VAR_DECL_CHECK (NODE)->decl_with_vis.init_priority_p)
3128 NODE. */
3129 #define DECL_INIT_PRIORITY(NODE) \
3130 (decl_init_priority_lookup (NODE))
3131 /* Set the initialization priority for NODE to VAL. */
3132 #define SET_DECL_INIT_PRIORITY(NODE, VAL) \
3133 (decl_init_priority_insert (NODE, VAL))
3135 /* For a FUNCTION_DECL the finalization priority of NODE. */
3136 #define DECL_FINI_PRIORITY(NODE) \
3137 (decl_fini_priority_lookup (NODE))
3138 /* Set the finalization priority for NODE to VAL. */
3139 #define SET_DECL_FINI_PRIORITY(NODE, VAL) \
3140 (decl_fini_priority_insert (NODE, VAL))
3155 #define DECL_TLS_MODEL(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model)
3159 #define DECL_THREAD_LOCAL_P(NODE) \
3160 (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model >= TLS_MODEL_REAL)
3170 #define DECL_RESULT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.result)
3177 to an INTEGER_CST node which is suitable for use as an index
3180 #define DECL_VINDEX(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.vindex)
3197 #define DECL_RESULT(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.result)
3200 #define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.uninlinable)
3204 #define DECL_SAVED_TREE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.saved_tree)
3209 #define DECL_IS_MALLOC(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.malloc_flag)
3214 #define DECL_IS_OPERATOR_NEW(NODE) \
3215 (FUNCTION_DECL_CHECK (NODE)->function_decl.operator_new_flag)
3219 #define DECL_IS_RETURNS_TWICE(NODE) \
3220 (FUNCTION_DECL_CHECK (NODE)->function_decl.returns_twice_flag)
3224 #define DECL_PURE_P(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.pure_flag)
3232 #define DECL_LOOPING_CONST_OR_PURE_P(NODE) \
3233 (FUNCTION_DECL_CHECK (NODE)->function_decl.looping_const_or_pure_flag)
3238 #define DECL_IS_NOVOPS(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.novops_flag)
3242 #define DECL_STATIC_CONSTRUCTOR(NODE) \
3243 (FUNCTION_DECL_CHECK (NODE)->function_decl.static_ctor_flag)
3245 #define DECL_STATIC_DESTRUCTOR(NODE) \
3246 (FUNCTION_DECL_CHECK (NODE)->function_decl.static_dtor_flag)
3250 #define DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(NODE) \
3251 (FUNCTION_DECL_CHECK (NODE)->function_decl.no_instrument_function_entry_exit)
3255 #define DECL_NO_LIMIT_STACK(NODE) \
3256 (FUNCTION_DECL_CHECK (NODE)->function_decl.no_limit_stack)
3260 #define DECL_NO_STATIC_CHAIN(NODE) \
3261 (FUNCTION_DECL_CHECK (NODE)->function_decl.regdecl_flag)
3272 #define DECL_DECLARED_INLINE_P(NODE) \
3273 (FUNCTION_DECL_CHECK (NODE)->function_decl.declared_inline_flag)
3277 #define DECL_NO_INLINE_WARNING_P(NODE) \
3278 (FUNCTION_DECL_CHECK (NODE)->function_decl.no_inline_warning_flag)
3284 #define DECL_DISREGARD_INLINE_LIMITS(NODE) \
3285 (FUNCTION_DECL_CHECK (NODE)->function_decl.disregard_inline_limits)
3289 #define DECL_STRUCT_FUNCTION(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.f)
3292 #define DECL_BUILT_IN(NODE) (DECL_BUILT_IN_CLASS (NODE) != NOT_BUILT_IN)
3295 #define DECL_BUILT_IN_CLASS(NODE) \
3296 (FUNCTION_DECL_CHECK (NODE)->function_decl.built_in_class)
3301 #define DECL_ARGUMENTS(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.arguments)
3302 #define DECL_ARGUMENT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.arguments)
3306 #define DECL_FUNCTION_SPECIFIC_TARGET(NODE) \
3307 (FUNCTION_DECL_CHECK (NODE)->function_decl.function_specific_target)
3311 #define DECL_FUNCTION_SPECIFIC_OPTIMIZATION(NODE) \
3312 (FUNCTION_DECL_CHECK (NODE)->function_decl.function_specific_optimization)
3360 #define DECL_ORIGINAL_TYPE(NODE) (TYPE_DECL_CHECK (NODE)->decl_non_common.result)
3365 #define TYPE_DECL_SUPPRESS_DEBUG(NODE) \
3366 (TYPE_DECL_CHECK (NODE)->decl_common.decl_flag_2)
3369 IMPORTED_DECL node. */
3370 #define IMPORTED_DECL_ASSOCIATED_DECL(NODE) \
3371 (DECL_INITIAL (IMPORTED_DECL_CHECK (NODE)))
3384 Use the interface in tree-iterator.h to access this node. */
3386 #define STATEMENT_LIST_HEAD(NODE) \
3387 (STATEMENT_LIST_CHECK (NODE)->stmt_list.head)
3388 #define STATEMENT_LIST_TAIL(NODE) \
3389 (STATEMENT_LIST_CHECK (NODE)->stmt_list.tail)
3418 #define TREE_OPTIMIZATION(NODE) \
3419 (&OPTIMIZATION_NODE_CHECK (NODE)->optimization.opts)
3421 /* Return a tree node that encapsulates the current optimization options. */
3434 #define TREE_TARGET_OPTION(NODE) \
3435 (&TARGET_OPTION_NODE_CHECK (NODE)->target_option.opts)
3437 /* Return a tree node that encapsulates the current target options. */
3442 /* Define the overall contents of a tree node.
3444 for various types of node. */
3797 /* The node that should be placed at the end of a parameter list to
3801 anything else about this node. */
3805 #define MAIN_NAME_P(NODE) (IDENTIFIER_NODE_CHECK (NODE) == main_identifier_node)
3900 /* Compute the number of bytes occupied by 'node'. This routine only
3910 /* Lowest level primitive for allocating a node.
3917 /* Make a copy of a node, with all the same contents. */
3935 /* Return the (unique) IDENTIFIER_NODE node for a given name.
3954 previously been referred to, return that node; otherwise return
4142 /* Function to handle this attribute. NODE points to the node to which
4156 tree (*const handler) (tree *node, tree name, tree args,
4190 /* Given a tree node and a string, return nonzero if the tree node is
4244 /* Make a copy of a type node. */
4255 /* Given a ..._TYPE node, calculate the TYPE_SIZE, TYPE_SIZE_UNIT,
4257 node, does nothing except for the first time. */
4308 /* Given a hashcode and a ..._TYPE node (for which the hashcode was made),
4309 return a canonicalized ..._TYPE node, so that duplicates are not made.
4315 /* Given a VAR_DECL, PARM_DECL, RESULT_DECL or FIELD_DECL node,
4317 fields. Call this only once for any given decl node.
4400 by making the last node in X point to Y.
4405 /* Make a new TREE_LIST node from specified PURPOSE, VALUE and CHAIN. */
4410 /* Return the last tree node in a chain. */
4495 the innermost non-arithmetic node. */
5077 NODE,
5315 /* Compute the number of operands in an expression node NODE. For
5316 tcc_vl_exp nodes like CALL_EXPRs, this is stored in the node itself,
5317 otherwise it is looked up from the node's code. */
5319 tree_operand_length (const_tree node)
5321 if (VL_EXP_CLASS_P (node))
5322 return VL_EXP_OPERAND_LENGTH (node);
5324 return TREE_CODE_LENGTH (TREE_CODE (node));
5347 arguments from CALL_EXPR node EXP. */