Mercurial > hg > CbC > CbC_gcc
comparison gcc/tree.h @ 63:b7f97abdc517 gcc-4.6-20100522
update gcc from gcc-4.5.0 to gcc-4.6
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 24 May 2010 12:47:05 +0900 |
parents | 77e2b8dfacca |
children | f6334be47118 |
comparison
equal
deleted
inserted
replaced
56:3c8a44c06a95 | 63:b7f97abdc517 |
---|---|
1 /* Front-end tree definitions for GNU compiler. | 1 /* Front-end tree definitions for GNU compiler. |
2 Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, | 2 Copyright (C) 1989, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, |
3 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 | 3 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 |
4 Free Software Foundation, Inc. | 4 Free Software Foundation, Inc. |
5 | 5 |
6 This file is part of GCC. | 6 This file is part of GCC. |
7 | 7 |
8 GCC is free software; you can redistribute it and/or modify it under | 8 GCC is free software; you can redistribute it and/or modify it under |
25 #include "hashtab.h" | 25 #include "hashtab.h" |
26 #include "machmode.h" | 26 #include "machmode.h" |
27 #include "input.h" | 27 #include "input.h" |
28 #include "statistics.h" | 28 #include "statistics.h" |
29 #include "vec.h" | 29 #include "vec.h" |
30 #include "vecir.h" | |
30 #include "double-int.h" | 31 #include "double-int.h" |
32 #include "real.h" | |
33 #include "fixed-value.h" | |
31 #include "alias.h" | 34 #include "alias.h" |
32 #include "options.h" | 35 #include "options.h" |
33 | 36 |
34 /* Codes of tree nodes */ | 37 /* Codes of tree nodes */ |
35 | 38 |
176 | 179 |
177 /* Names of tree components. */ | 180 /* Names of tree components. */ |
178 | 181 |
179 extern const char *const tree_code_name[]; | 182 extern const char *const tree_code_name[]; |
180 | 183 |
181 /* A vectors of trees. */ | |
182 DEF_VEC_P(tree); | |
183 DEF_VEC_ALLOC_P(tree,gc); | |
184 DEF_VEC_ALLOC_P(tree,heap); | |
185 | |
186 /* We have to be able to tell cgraph about the needed-ness of the target | 184 /* We have to be able to tell cgraph about the needed-ness of the target |
187 of an alias. This requires that the decl have been defined. Aliases | 185 of an alias. This requires that the decl have been defined. Aliases |
188 that precede their definition have to be queued for later processing. */ | 186 that precede their definition have to be queued for later processing. */ |
189 | 187 |
190 typedef struct GTY(()) alias_pair | 188 typedef struct GTY(()) alias_pair |
409 for which types of nodes they are defined. | 407 for which types of nodes they are defined. |
410 | 408 |
411 addressable_flag: | 409 addressable_flag: |
412 | 410 |
413 TREE_ADDRESSABLE in | 411 TREE_ADDRESSABLE in |
414 VAR_DECL, FUNCTION_DECL, FIELD_DECL, LABEL_DECL | 412 VAR_DECL, PARM_DECL, RESULT_DECL, FUNCTION_DECL, LABEL_DECL |
415 all types | 413 all types |
416 CONSTRUCTOR, IDENTIFIER_NODE | 414 CONSTRUCTOR, IDENTIFIER_NODE |
417 STMT_EXPR, it means we want the result of the enclosed expression | 415 STMT_EXPR, it means we want the result of the enclosed expression |
418 | 416 |
419 CALL_EXPR_TAILCALL in | 417 CALL_EXPR_TAILCALL in |
455 CASE_HIGH_SEEN in | 453 CASE_HIGH_SEEN in |
456 CASE_LABEL_EXPR | 454 CASE_LABEL_EXPR |
457 | 455 |
458 CALL_CANNOT_INLINE_P in | 456 CALL_CANNOT_INLINE_P in |
459 CALL_EXPR | 457 CALL_EXPR |
458 | |
459 ENUM_IS_SCOPED in | |
460 ENUMERAL_TYPE | |
460 | 461 |
461 public_flag: | 462 public_flag: |
462 | 463 |
463 TREE_OVERFLOW in | 464 TREE_OVERFLOW in |
464 INTEGER_CST, REAL_CST, COMPLEX_CST, VECTOR_CST | 465 INTEGER_CST, REAL_CST, COMPLEX_CST, VECTOR_CST |
498 | 499 |
499 OMP_PARALLEL_COMBINED in | 500 OMP_PARALLEL_COMBINED in |
500 OMP_PARALLEL | 501 OMP_PARALLEL |
501 OMP_CLAUSE_PRIVATE_OUTER_REF in | 502 OMP_CLAUSE_PRIVATE_OUTER_REF in |
502 OMP_CLAUSE_PRIVATE | 503 OMP_CLAUSE_PRIVATE |
504 | |
505 TYPE_REF_IS_RVALUE in | |
506 REFERENCE_TYPE | |
503 | 507 |
504 protected_flag: | 508 protected_flag: |
505 | 509 |
506 TREE_PROTECTED in | 510 TREE_PROTECTED in |
507 BLOCK | 511 BLOCK |
1098 (COMPLETE_TYPE_P (TREE_CODE (NODE) == ARRAY_TYPE ? TREE_TYPE (NODE) : (NODE))) | 1102 (COMPLETE_TYPE_P (TREE_CODE (NODE) == ARRAY_TYPE ? TREE_TYPE (NODE) : (NODE))) |
1099 | 1103 |
1100 | 1104 |
1101 /* Define many boolean fields that all tree nodes have. */ | 1105 /* Define many boolean fields that all tree nodes have. */ |
1102 | 1106 |
1103 /* In VAR_DECL nodes, nonzero means address of this is needed. | 1107 /* In VAR_DECL, PARM_DECL and RESULT_DECL nodes, nonzero means address |
1104 So it cannot be in a register. | 1108 of this is needed. So it cannot be in a register. |
1105 In a FUNCTION_DECL, nonzero means its address is needed. | 1109 In a FUNCTION_DECL, nonzero means its address is needed. |
1106 So it must be compiled even if it is an inline function. | 1110 So it must be compiled even if it is an inline function. |
1107 In a FIELD_DECL node, it means that the programmer is permitted to | |
1108 construct the address of this field. This is used for aliasing | |
1109 purposes: see record_component_aliases. | |
1110 In CONSTRUCTOR nodes, it means object constructed must be in memory. | 1111 In CONSTRUCTOR nodes, it means object constructed must be in memory. |
1111 In LABEL_DECL nodes, it means a goto for this label has been seen | 1112 In LABEL_DECL nodes, it means a goto for this label has been seen |
1112 from a place outside all binding contours that restore stack levels. | 1113 from a place outside all binding contours that restore stack levels. |
1113 In ..._TYPE nodes, it means that objects of this type must | 1114 In ..._TYPE nodes, it means that objects of this type must be fully |
1114 be fully addressable. This means that pieces of this | 1115 addressable. This means that pieces of this object cannot go into |
1115 object cannot go into register parameters, for example. | 1116 register parameters, for example. If this a function type, this |
1117 means that the value must be returned in memory. | |
1116 In IDENTIFIER_NODEs, this means that some extern decl for this name | 1118 In IDENTIFIER_NODEs, this means that some extern decl for this name |
1117 had its address taken. That matters for inline functions. */ | 1119 had its address taken. That matters for inline functions. */ |
1118 #define TREE_ADDRESSABLE(NODE) ((NODE)->base.addressable_flag) | 1120 #define TREE_ADDRESSABLE(NODE) ((NODE)->base.addressable_flag) |
1119 | 1121 |
1120 /* Set on a CALL_EXPR if the call is in a tail position, ie. just before the | 1122 /* Set on a CALL_EXPR if the call is in a tail position, ie. just before the |
1158 #define CASE_HIGH_SEEN(NODE) \ | 1160 #define CASE_HIGH_SEEN(NODE) \ |
1159 (CASE_LABEL_EXPR_CHECK (NODE)->base.static_flag) | 1161 (CASE_LABEL_EXPR_CHECK (NODE)->base.static_flag) |
1160 | 1162 |
1161 /* Used to mark a CALL_EXPR as not suitable for inlining. */ | 1163 /* Used to mark a CALL_EXPR as not suitable for inlining. */ |
1162 #define CALL_CANNOT_INLINE_P(NODE) (CALL_EXPR_CHECK (NODE)->base.static_flag) | 1164 #define CALL_CANNOT_INLINE_P(NODE) (CALL_EXPR_CHECK (NODE)->base.static_flag) |
1165 | |
1166 /* Used to mark scoped enums. */ | |
1167 #define ENUM_IS_SCOPED(NODE) (ENUMERAL_TYPE_CHECK (NODE)->base.static_flag) | |
1163 | 1168 |
1164 /* In an expr node (usually a conversion) this means the node was made | 1169 /* In an expr node (usually a conversion) this means the node was made |
1165 implicitly and should not lead to any sort of warning. In a decl node, | 1170 implicitly and should not lead to any sort of warning. In a decl node, |
1166 warnings concerning the decl should be suppressed. This is used at | 1171 warnings concerning the decl should be suppressed. This is used at |
1167 least for used-before-set warnings, and it set after one warning is | 1172 least for used-before-set warnings, and it set after one warning is |
1315 such variables). */ | 1320 such variables). */ |
1316 #define DECL_RESTRICTED_P(NODE) \ | 1321 #define DECL_RESTRICTED_P(NODE) \ |
1317 (TREE_CHECK3 (NODE, VAR_DECL, PARM_DECL, \ | 1322 (TREE_CHECK3 (NODE, VAR_DECL, PARM_DECL, \ |
1318 RESULT_DECL)->decl_common.decl_restricted_flag) | 1323 RESULT_DECL)->decl_common.decl_restricted_flag) |
1319 | 1324 |
1325 #define DECL_READ_P(NODE) \ | |
1326 (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_read_flag) | |
1327 | |
1320 /* In a CALL_EXPR, means that the call is the jump from a thunk to the | 1328 /* In a CALL_EXPR, means that the call is the jump from a thunk to the |
1321 thunked-to function. */ | 1329 thunked-to function. */ |
1322 #define CALL_FROM_THUNK_P(NODE) (CALL_EXPR_CHECK (NODE)->base.protected_flag) | 1330 #define CALL_FROM_THUNK_P(NODE) (CALL_EXPR_CHECK (NODE)->base.protected_flag) |
1323 | 1331 |
1324 /* In a type, nonzero means that all objects of the type are guaranteed by the | 1332 /* In a type, nonzero means that all objects of the type are guaranteed by the |
1334 | 1342 |
1335 /* Used in classes in C++. */ | 1343 /* Used in classes in C++. */ |
1336 #define TREE_PRIVATE(NODE) ((NODE)->base.private_flag) | 1344 #define TREE_PRIVATE(NODE) ((NODE)->base.private_flag) |
1337 /* Used in classes in C++. */ | 1345 /* Used in classes in C++. */ |
1338 #define TREE_PROTECTED(NODE) ((NODE)->base.protected_flag) | 1346 #define TREE_PROTECTED(NODE) ((NODE)->base.protected_flag) |
1347 | |
1348 /* True if reference type NODE is a C++ rvalue reference. */ | |
1349 #define TYPE_REF_IS_RVALUE(NODE) \ | |
1350 (REFERENCE_TYPE_CHECK (NODE)->base.private_flag) | |
1339 | 1351 |
1340 /* Nonzero in a _DECL if the use of the name is defined as a | 1352 /* Nonzero in a _DECL if the use of the name is defined as a |
1341 deprecated feature by __attribute__((deprecated)). */ | 1353 deprecated feature by __attribute__((deprecated)). */ |
1342 #define TREE_DEPRECATED(NODE) \ | 1354 #define TREE_DEPRECATED(NODE) \ |
1343 ((NODE)->base.deprecated_flag) | 1355 ((NODE)->base.deprecated_flag) |
1400 }; | 1412 }; |
1401 | 1413 |
1402 /* In a FIXED_CST node. */ | 1414 /* In a FIXED_CST node. */ |
1403 struct fixed_value; | 1415 struct fixed_value; |
1404 | 1416 |
1405 #define TREE_FIXED_CST_PTR(NODE) (FIXED_CST_CHECK (NODE)->fixed_cst.fixed_cst_ptr) | 1417 #define TREE_FIXED_CST_PTR(NODE) \ |
1418 (FIXED_CST_CHECK (NODE)->fixed_cst.fixed_cst_ptr) | |
1406 #define TREE_FIXED_CST(NODE) (*TREE_FIXED_CST_PTR (NODE)) | 1419 #define TREE_FIXED_CST(NODE) (*TREE_FIXED_CST_PTR (NODE)) |
1407 | 1420 |
1408 struct GTY(()) tree_fixed_cst { | 1421 struct GTY(()) tree_fixed_cst { |
1409 struct tree_common common; | 1422 struct tree_common common; |
1410 struct fixed_value * fixed_cst_ptr; | 1423 struct fixed_value * fixed_cst_ptr; |
1487 | 1500 |
1488 /* In a CONSTRUCTOR node. */ | 1501 /* In a CONSTRUCTOR node. */ |
1489 #define CONSTRUCTOR_ELTS(NODE) (CONSTRUCTOR_CHECK (NODE)->constructor.elts) | 1502 #define CONSTRUCTOR_ELTS(NODE) (CONSTRUCTOR_CHECK (NODE)->constructor.elts) |
1490 #define CONSTRUCTOR_ELT(NODE,IDX) \ | 1503 #define CONSTRUCTOR_ELT(NODE,IDX) \ |
1491 (VEC_index (constructor_elt, CONSTRUCTOR_ELTS (NODE), IDX)) | 1504 (VEC_index (constructor_elt, CONSTRUCTOR_ELTS (NODE), IDX)) |
1492 #define CONSTRUCTOR_NELTS(NODE) (VEC_length (constructor_elt, CONSTRUCTOR_ELTS (NODE))) | 1505 #define CONSTRUCTOR_NELTS(NODE) \ |
1506 (VEC_length (constructor_elt, CONSTRUCTOR_ELTS (NODE))) | |
1493 | 1507 |
1494 /* Iterate through the vector V of CONSTRUCTOR_ELT elements, yielding the | 1508 /* Iterate through the vector V of CONSTRUCTOR_ELT elements, yielding the |
1495 value of each element (stored within VAL). IX must be a scratch variable | 1509 value of each element (stored within VAL). IX must be a scratch variable |
1496 of unsigned integer type. */ | 1510 of unsigned integer type. */ |
1497 #define FOR_EACH_CONSTRUCTOR_VALUE(V, IX, VAL) \ | 1511 #define FOR_EACH_CONSTRUCTOR_VALUE(V, IX, VAL) \ |
1505 the value of each element (stored within VAL) and its index (stored | 1519 the value of each element (stored within VAL) and its index (stored |
1506 within INDEX). IX must be a scratch variable of unsigned integer type. */ | 1520 within INDEX). IX must be a scratch variable of unsigned integer type. */ |
1507 #define FOR_EACH_CONSTRUCTOR_ELT(V, IX, INDEX, VAL) \ | 1521 #define FOR_EACH_CONSTRUCTOR_ELT(V, IX, INDEX, VAL) \ |
1508 for (IX = 0; (IX >= VEC_length (constructor_elt, V)) \ | 1522 for (IX = 0; (IX >= VEC_length (constructor_elt, V)) \ |
1509 ? false \ | 1523 ? false \ |
1510 : ((VAL = VEC_index (constructor_elt, V, IX)->value), \ | 1524 : (((void) (VAL = VEC_index (constructor_elt, V, IX)->value)), \ |
1511 (INDEX = VEC_index (constructor_elt, V, IX)->index), \ | 1525 (INDEX = VEC_index (constructor_elt, V, IX)->index), \ |
1512 true); \ | 1526 true); \ |
1513 (IX)++) | 1527 (IX)++) |
1514 | 1528 |
1515 /* Append a new constructor element to V, with the specified INDEX and VAL. */ | 1529 /* Append a new constructor element to V, with the specified INDEX and VAL. */ |
1516 #define CONSTRUCTOR_APPEND_ELT(V, INDEX, VALUE) \ | 1530 #define CONSTRUCTOR_APPEND_ELT(V, INDEX, VALUE) \ |
1517 do { \ | 1531 do { \ |
1568 #define LOOP_EXPR_BODY(NODE) TREE_OPERAND_CHECK_CODE (NODE, LOOP_EXPR, 0) | 1582 #define LOOP_EXPR_BODY(NODE) TREE_OPERAND_CHECK_CODE (NODE, LOOP_EXPR, 0) |
1569 | 1583 |
1570 /* The source location of this expression. Non-tree_exp nodes such as | 1584 /* The source location of this expression. Non-tree_exp nodes such as |
1571 decls and constants can be shared among multiple locations, so | 1585 decls and constants can be shared among multiple locations, so |
1572 return nothing. */ | 1586 return nothing. */ |
1573 #define EXPR_LOCATION(NODE) (EXPR_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION) | 1587 #define EXPR_LOCATION(NODE) \ |
1588 (EXPR_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION) | |
1574 #define SET_EXPR_LOCATION(NODE, LOCUS) EXPR_CHECK ((NODE))->exp.locus = (LOCUS) | 1589 #define SET_EXPR_LOCATION(NODE, LOCUS) EXPR_CHECK ((NODE))->exp.locus = (LOCUS) |
1575 #define EXPR_HAS_LOCATION(NODE) (EXPR_LOCATION (NODE) != UNKNOWN_LOCATION) | 1590 #define EXPR_HAS_LOCATION(NODE) (EXPR_LOCATION (NODE) != UNKNOWN_LOCATION) |
1576 #define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus) | 1591 #define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus) |
1577 #define EXPR_LINENO(NODE) LOCATION_LINE (EXPR_CHECK (NODE)->exp.locus) | 1592 #define EXPR_LINENO(NODE) LOCATION_LINE (EXPR_CHECK (NODE)->exp.locus) |
1578 | 1593 |
1680 | 1695 |
1681 /* CALL_EXPR accessors. | 1696 /* CALL_EXPR accessors. |
1682 */ | 1697 */ |
1683 #define CALL_EXPR_FN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 1) | 1698 #define CALL_EXPR_FN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 1) |
1684 #define CALL_EXPR_STATIC_CHAIN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 2) | 1699 #define CALL_EXPR_STATIC_CHAIN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 2) |
1685 #define CALL_EXPR_ARGS(NODE) call_expr_arglist (NODE) | |
1686 #define CALL_EXPR_ARG(NODE, I) TREE_OPERAND (CALL_EXPR_CHECK (NODE), (I) + 3) | 1700 #define CALL_EXPR_ARG(NODE, I) TREE_OPERAND (CALL_EXPR_CHECK (NODE), (I) + 3) |
1687 #define call_expr_nargs(NODE) (VL_EXP_OPERAND_LENGTH(NODE) - 3) | 1701 #define call_expr_nargs(NODE) (VL_EXP_OPERAND_LENGTH(NODE) - 3) |
1688 | 1702 |
1689 /* CALL_EXPR_ARGP returns a pointer to the argument vector for NODE. | 1703 /* CALL_EXPR_ARGP returns a pointer to the argument vector for NODE. |
1690 We can't use &CALL_EXPR_ARG (NODE, 0) because that will complain if | 1704 We can't use &CALL_EXPR_ARG (NODE, 0) because that will complain if |
1863 /* Nonzero if this SSA_NAME is the default definition for the | 1877 /* Nonzero if this SSA_NAME is the default definition for the |
1864 underlying symbol. A default SSA name is created for symbol S if | 1878 underlying symbol. A default SSA name is created for symbol S if |
1865 the very first reference to S in the function is a read operation. | 1879 the very first reference to S in the function is a read operation. |
1866 Default definitions are always created by an empty statement and | 1880 Default definitions are always created by an empty statement and |
1867 belong to no basic block. */ | 1881 belong to no basic block. */ |
1868 #define SSA_NAME_IS_DEFAULT_DEF(NODE) \ | 1882 #define SSA_NAME_IS_DEFAULT_DEF(NODE) \ |
1869 SSA_NAME_CHECK (NODE)->base.default_def_flag | 1883 SSA_NAME_CHECK (NODE)->base.default_def_flag |
1870 | 1884 |
1871 /* Attributes for SSA_NAMEs for pointer-type variables. */ | 1885 /* Attributes for SSA_NAMEs for pointer-type variables. */ |
1872 #define SSA_NAME_PTR_INFO(N) \ | 1886 #define SSA_NAME_PTR_INFO(N) \ |
1873 SSA_NAME_CHECK (N)->ssa_name.ptr_info | 1887 SSA_NAME_CHECK (N)->ssa_name.ptr_info |
1952 | 1966 |
1953 tree GTY ((length ("omp_clause_num_ops[OMP_CLAUSE_CODE ((tree)&%h)]"))) ops[1]; | 1967 tree GTY ((length ("omp_clause_num_ops[OMP_CLAUSE_CODE ((tree)&%h)]"))) ops[1]; |
1954 }; | 1968 }; |
1955 | 1969 |
1956 | 1970 |
1957 struct varray_head_tag; | |
1958 | |
1959 /* In a BLOCK node. */ | 1971 /* In a BLOCK node. */ |
1960 #define BLOCK_VARS(NODE) (BLOCK_CHECK (NODE)->block.vars) | 1972 #define BLOCK_VARS(NODE) (BLOCK_CHECK (NODE)->block.vars) |
1961 #define BLOCK_NONLOCALIZED_VARS(NODE) (BLOCK_CHECK (NODE)->block.nonlocalized_vars) | 1973 #define BLOCK_NONLOCALIZED_VARS(NODE) \ |
1962 #define BLOCK_NUM_NONLOCALIZED_VARS(NODE) VEC_length (tree, BLOCK_NONLOCALIZED_VARS (NODE)) | 1974 (BLOCK_CHECK (NODE)->block.nonlocalized_vars) |
1963 #define BLOCK_NONLOCALIZED_VAR(NODE,N) VEC_index (tree, BLOCK_NONLOCALIZED_VARS (NODE), N) | 1975 #define BLOCK_NUM_NONLOCALIZED_VARS(NODE) \ |
1976 VEC_length (tree, BLOCK_NONLOCALIZED_VARS (NODE)) | |
1977 #define BLOCK_NONLOCALIZED_VAR(NODE,N) \ | |
1978 VEC_index (tree, BLOCK_NONLOCALIZED_VARS (NODE), N) | |
1964 #define BLOCK_SUBBLOCKS(NODE) (BLOCK_CHECK (NODE)->block.subblocks) | 1979 #define BLOCK_SUBBLOCKS(NODE) (BLOCK_CHECK (NODE)->block.subblocks) |
1965 #define BLOCK_SUPERCONTEXT(NODE) (BLOCK_CHECK (NODE)->block.supercontext) | 1980 #define BLOCK_SUPERCONTEXT(NODE) (BLOCK_CHECK (NODE)->block.supercontext) |
1966 /* Note: when changing this, make sure to find the places | 1981 /* Note: when changing this, make sure to find the places |
1967 that use chainon or nreverse. */ | 1982 that use chainon or nreverse. */ |
1968 #define BLOCK_CHAIN(NODE) TREE_CHAIN (BLOCK_CHECK (NODE)) | 1983 #define BLOCK_CHAIN(NODE) TREE_CHAIN (BLOCK_CHECK (NODE)) |
2099 #define TYPE_FBIT(NODE) (GET_MODE_FBIT (TYPE_MODE (NODE))) | 2114 #define TYPE_FBIT(NODE) (GET_MODE_FBIT (TYPE_MODE (NODE))) |
2100 | 2115 |
2101 /* For a VECTOR_TYPE node, this describes a different type which is emitted | 2116 /* For a VECTOR_TYPE node, this describes a different type which is emitted |
2102 in the debugging output. We use this to describe a vector as a | 2117 in the debugging output. We use this to describe a vector as a |
2103 structure containing an array. */ | 2118 structure containing an array. */ |
2104 #define TYPE_DEBUG_REPRESENTATION_TYPE(NODE) (VECTOR_TYPE_CHECK (NODE)->type.values) | 2119 #define TYPE_DEBUG_REPRESENTATION_TYPE(NODE) \ |
2120 (VECTOR_TYPE_CHECK (NODE)->type.values) | |
2105 | 2121 |
2106 /* For record and union types, information about this type, as a base type | 2122 /* For record and union types, information about this type, as a base type |
2107 for itself. */ | 2123 for itself. */ |
2108 #define TYPE_BINFO(NODE) (RECORD_OR_UNION_CHECK(NODE)->type.binfo) | 2124 #define TYPE_BINFO(NODE) (RECORD_OR_UNION_CHECK(NODE)->type.binfo) |
2109 | 2125 |
2249 /* Indicates that objects of this type must be initialized by calling a | 2265 /* Indicates that objects of this type must be initialized by calling a |
2250 function when they are created. */ | 2266 function when they are created. */ |
2251 #define TYPE_NEEDS_CONSTRUCTING(NODE) \ | 2267 #define TYPE_NEEDS_CONSTRUCTING(NODE) \ |
2252 (TYPE_CHECK (NODE)->type.needs_constructing_flag) | 2268 (TYPE_CHECK (NODE)->type.needs_constructing_flag) |
2253 | 2269 |
2254 /* Indicates that objects of this type (a UNION_TYPE), should be passed | 2270 /* Indicates that a UNION_TYPE object should be passed the same way that |
2255 the same way that the first union alternative would be passed. */ | 2271 the first union alternative would be passed, or that a RECORD_TYPE |
2256 #define TYPE_TRANSPARENT_UNION(NODE) \ | 2272 object should be passed the same way that the first (and only) member |
2257 (UNION_TYPE_CHECK (NODE)->type.transparent_union_flag) | 2273 would be passed. */ |
2274 #define TYPE_TRANSPARENT_AGGR(NODE) \ | |
2275 (RECORD_OR_UNION_CHECK (NODE)->type.transparent_aggr_flag) | |
2258 | 2276 |
2259 /* For an ARRAY_TYPE, indicates that it is not permitted to take the | 2277 /* For an ARRAY_TYPE, indicates that it is not permitted to take the |
2260 address of a component of the type. This is the counterpart of | 2278 address of a component of the type. This is the counterpart of |
2261 DECL_NONADDRESSABLE_P for arrays, see the definition of this flag. */ | 2279 DECL_NONADDRESSABLE_P for arrays, see the definition of this flag. */ |
2262 #define TYPE_NONALIASED_COMPONENT(NODE) \ | 2280 #define TYPE_NONALIASED_COMPONENT(NODE) \ |
2263 (ARRAY_TYPE_CHECK (NODE)->type.transparent_union_flag) | 2281 (ARRAY_TYPE_CHECK (NODE)->type.transparent_aggr_flag) |
2264 | 2282 |
2265 /* Indicated that objects of this type should be laid out in as | 2283 /* Indicated that objects of this type should be laid out in as |
2266 compact a way as possible. */ | 2284 compact a way as possible. */ |
2267 #define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->common.base.packed_flag) | 2285 #define TYPE_PACKED(NODE) (TYPE_CHECK (NODE)->common.base.packed_flag) |
2268 | 2286 |
2283 unsigned int uid; | 2301 unsigned int uid; |
2284 | 2302 |
2285 unsigned int precision : 10; | 2303 unsigned int precision : 10; |
2286 unsigned no_force_blk_flag : 1; | 2304 unsigned no_force_blk_flag : 1; |
2287 unsigned needs_constructing_flag : 1; | 2305 unsigned needs_constructing_flag : 1; |
2288 unsigned transparent_union_flag : 1; | 2306 unsigned transparent_aggr_flag : 1; |
2289 unsigned restrict_flag : 1; | 2307 unsigned restrict_flag : 1; |
2290 unsigned contains_placeholder_bits : 2; | 2308 unsigned contains_placeholder_bits : 2; |
2291 | 2309 |
2292 ENUM_BITFIELD(machine_mode) mode : 8; | 2310 ENUM_BITFIELD(machine_mode) mode : 8; |
2293 | 2311 |
2481 | 2499 |
2482 /* DEBUG_EXPR_DECLs get negative UID numbers, to catch erroneous | 2500 /* DEBUG_EXPR_DECLs get negative UID numbers, to catch erroneous |
2483 uses. */ | 2501 uses. */ |
2484 #define DEBUG_TEMP_UID(NODE) (-DECL_UID (TREE_CHECK ((NODE), DEBUG_EXPR_DECL))) | 2502 #define DEBUG_TEMP_UID(NODE) (-DECL_UID (TREE_CHECK ((NODE), DEBUG_EXPR_DECL))) |
2485 | 2503 |
2504 /* Every ..._DECL node gets a unique number that stays the same even | |
2505 when the decl is copied by the inliner once it is set. */ | |
2506 #define DECL_PT_UID(NODE) \ | |
2507 (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid == -1u \ | |
2508 ? (NODE)->decl_minimal.uid : (NODE)->decl_common.pt_uid) | |
2509 /* Initialize the ..._DECL node pt-uid to the decls uid. */ | |
2510 #define SET_DECL_PT_UID(NODE, UID) \ | |
2511 (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid = (UID)) | |
2512 /* Whether the ..._DECL node pt-uid has been initialized and thus needs to | |
2513 be preserved when copyin the decl. */ | |
2514 #define DECL_PT_UID_SET_P(NODE) \ | |
2515 (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid != -1u) | |
2516 | |
2486 /* These two fields describe where in the source code the declaration | 2517 /* These two fields describe where in the source code the declaration |
2487 was. If the declaration appears in several places (as for a C | 2518 was. If the declaration appears in several places (as for a C |
2488 function that is declared first and then defined later), this | 2519 function that is declared first and then defined later), this |
2489 information should refer to the definition. */ | 2520 information should refer to the definition. */ |
2490 #define DECL_SOURCE_LOCATION(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.locus) | 2521 #define DECL_SOURCE_LOCATION(NODE) \ |
2522 (DECL_MINIMAL_CHECK (NODE)->decl_minimal.locus) | |
2491 #define DECL_SOURCE_FILE(NODE) LOCATION_FILE (DECL_SOURCE_LOCATION (NODE)) | 2523 #define DECL_SOURCE_FILE(NODE) LOCATION_FILE (DECL_SOURCE_LOCATION (NODE)) |
2492 #define DECL_SOURCE_LINE(NODE) LOCATION_LINE (DECL_SOURCE_LOCATION (NODE)) | 2524 #define DECL_SOURCE_LINE(NODE) LOCATION_LINE (DECL_SOURCE_LOCATION (NODE)) |
2493 #define DECL_IS_BUILTIN(DECL) \ | 2525 #define DECL_IS_BUILTIN(DECL) \ |
2494 (DECL_SOURCE_LOCATION (DECL) <= BUILTINS_LOCATION) | 2526 (DECL_SOURCE_LOCATION (DECL) <= BUILTINS_LOCATION) |
2495 | 2527 |
2499 nodes, this points to either the FUNCTION_DECL for the containing | 2531 nodes, this points to either the FUNCTION_DECL for the containing |
2500 function, the RECORD_TYPE or UNION_TYPE for the containing type, or | 2532 function, the RECORD_TYPE or UNION_TYPE for the containing type, or |
2501 NULL_TREE or a TRANSLATION_UNIT_DECL if the given decl has "file | 2533 NULL_TREE or a TRANSLATION_UNIT_DECL if the given decl has "file |
2502 scope". */ | 2534 scope". */ |
2503 #define DECL_CONTEXT(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.context) | 2535 #define DECL_CONTEXT(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.context) |
2504 #define DECL_FIELD_CONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->decl_minimal.context) | 2536 #define DECL_FIELD_CONTEXT(NODE) \ |
2537 (FIELD_DECL_CHECK (NODE)->decl_minimal.context) | |
2505 struct GTY(()) tree_decl_minimal { | 2538 struct GTY(()) tree_decl_minimal { |
2506 struct tree_common common; | 2539 struct tree_common common; |
2507 location_t locus; | 2540 location_t locus; |
2508 unsigned int uid; | 2541 unsigned int uid; |
2509 tree name; | 2542 tree name; |
2515 decl node which this decl is an inlined/cloned instance of, or else it | 2548 decl node which this decl is an inlined/cloned instance of, or else it |
2516 is NULL indicating that this decl is not an instance of some other decl. | 2549 is NULL indicating that this decl is not an instance of some other decl. |
2517 | 2550 |
2518 The C front-end also uses this in a nested declaration of an inline | 2551 The C front-end also uses this in a nested declaration of an inline |
2519 function, to point back to the definition. */ | 2552 function, to point back to the definition. */ |
2520 #define DECL_ABSTRACT_ORIGIN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_origin) | 2553 #define DECL_ABSTRACT_ORIGIN(NODE) \ |
2554 (DECL_COMMON_CHECK (NODE)->decl_common.abstract_origin) | |
2521 | 2555 |
2522 /* Like DECL_ABSTRACT_ORIGIN, but returns NODE if there's no abstract | 2556 /* Like DECL_ABSTRACT_ORIGIN, but returns NODE if there's no abstract |
2523 origin. This is useful when setting the DECL_ABSTRACT_ORIGIN. */ | 2557 origin. This is useful when setting the DECL_ABSTRACT_ORIGIN. */ |
2524 #define DECL_ORIGIN(NODE) \ | 2558 #define DECL_ORIGIN(NODE) \ |
2525 (DECL_ABSTRACT_ORIGIN (NODE) ? DECL_ABSTRACT_ORIGIN (NODE) : (NODE)) | 2559 (DECL_ABSTRACT_ORIGIN (NODE) ? DECL_ABSTRACT_ORIGIN (NODE) : (NODE)) |
2526 | 2560 |
2527 /* Nonzero for any sort of ..._DECL node means this decl node represents an | 2561 /* Nonzero for any sort of ..._DECL node means this decl node represents an |
2528 inline instance of some original (abstract) decl from an inline function; | 2562 inline instance of some original (abstract) decl from an inline function; |
2529 suppress any warnings about shadowing some other variable. FUNCTION_DECL | 2563 suppress any warnings about shadowing some other variable. FUNCTION_DECL |
2530 nodes can also have their abstract origin set to themselves. */ | 2564 nodes can also have their abstract origin set to themselves. */ |
2531 #define DECL_FROM_INLINE(NODE) (DECL_ABSTRACT_ORIGIN (NODE) != NULL_TREE \ | 2565 #define DECL_FROM_INLINE(NODE) \ |
2532 && DECL_ABSTRACT_ORIGIN (NODE) != (NODE)) | 2566 (DECL_ABSTRACT_ORIGIN (NODE) != NULL_TREE \ |
2567 && DECL_ABSTRACT_ORIGIN (NODE) != (NODE)) | |
2533 | 2568 |
2534 /* In a DECL this is the field where attributes are stored. */ | 2569 /* In a DECL this is the field where attributes are stored. */ |
2535 #define DECL_ATTRIBUTES(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.attributes) | 2570 #define DECL_ATTRIBUTES(NODE) \ |
2571 (DECL_COMMON_CHECK (NODE)->decl_common.attributes) | |
2536 | 2572 |
2537 /* For a FUNCTION_DECL, holds the tree of BINDINGs. | 2573 /* For a FUNCTION_DECL, holds the tree of BINDINGs. |
2538 For a TRANSLATION_UNIT_DECL, holds the namespace's BLOCK. | 2574 For a TRANSLATION_UNIT_DECL, holds the namespace's BLOCK. |
2539 For a VAR_DECL, holds the initial value. | 2575 For a VAR_DECL, holds the initial value. |
2540 For a PARM_DECL, used for DECL_ARG_TYPE--default | 2576 For a PARM_DECL, used for DECL_ARG_TYPE--default |
2555 #define DECL_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.align) | 2591 #define DECL_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.align) |
2556 /* The alignment of NODE, in bytes. */ | 2592 /* The alignment of NODE, in bytes. */ |
2557 #define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT) | 2593 #define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT) |
2558 /* Set if the alignment of this DECL has been set by the user, for | 2594 /* Set if the alignment of this DECL has been set by the user, for |
2559 example with an 'aligned' attribute. */ | 2595 example with an 'aligned' attribute. */ |
2560 #define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->common.base.user_align) | 2596 #define DECL_USER_ALIGN(NODE) \ |
2597 (DECL_COMMON_CHECK (NODE)->common.base.user_align) | |
2561 /* Holds the machine mode corresponding to the declaration of a variable or | 2598 /* Holds the machine mode corresponding to the declaration of a variable or |
2562 field. Always equal to TYPE_MODE (TREE_TYPE (decl)) except for a | 2599 field. Always equal to TYPE_MODE (TREE_TYPE (decl)) except for a |
2563 FIELD_DECL. */ | 2600 FIELD_DECL. */ |
2564 #define DECL_MODE(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.mode) | 2601 #define DECL_MODE(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.mode) |
2565 | 2602 |
2576 (FUNCTION_DECL_CHECK (NODE)->function_decl.personality) | 2613 (FUNCTION_DECL_CHECK (NODE)->function_decl.personality) |
2577 | 2614 |
2578 /* Nonzero for a given ..._DECL node means that the name of this node should | 2615 /* Nonzero for a given ..._DECL node means that the name of this node should |
2579 be ignored for symbolic debug purposes. Moreover, for a FUNCTION_DECL, | 2616 be ignored for symbolic debug purposes. Moreover, for a FUNCTION_DECL, |
2580 the body of the function should also be ignored. */ | 2617 the body of the function should also be ignored. */ |
2581 #define DECL_IGNORED_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag) | 2618 #define DECL_IGNORED_P(NODE) \ |
2619 (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag) | |
2582 | 2620 |
2583 /* Nonzero for a given ..._DECL node means that this node represents an | 2621 /* Nonzero for a given ..._DECL node means that this node represents an |
2584 "abstract instance" of the given declaration (e.g. in the original | 2622 "abstract instance" of the given declaration (e.g. in the original |
2585 declaration of an inline function). When generating symbolic debugging | 2623 declaration of an inline function). When generating symbolic debugging |
2586 information, we mustn't try to generate any address information for nodes | 2624 information, we mustn't try to generate any address information for nodes |
2587 marked as "abstract instances" because we don't actually generate | 2625 marked as "abstract instances" because we don't actually generate |
2588 any code or allocate any data space for such instances. */ | 2626 any code or allocate any data space for such instances. */ |
2589 #define DECL_ABSTRACT(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_flag) | 2627 #define DECL_ABSTRACT(NODE) \ |
2628 (DECL_COMMON_CHECK (NODE)->decl_common.abstract_flag) | |
2590 | 2629 |
2591 /* Language-specific decl information. */ | 2630 /* Language-specific decl information. */ |
2592 #define DECL_LANG_SPECIFIC(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_specific) | 2631 #define DECL_LANG_SPECIFIC(NODE) \ |
2632 (DECL_COMMON_CHECK (NODE)->decl_common.lang_specific) | |
2593 | 2633 |
2594 /* In a VAR_DECL or FUNCTION_DECL, nonzero means external reference: | 2634 /* In a VAR_DECL or FUNCTION_DECL, nonzero means external reference: |
2595 do not allocate storage, and refer to a definition elsewhere. Note that | 2635 do not allocate storage, and refer to a definition elsewhere. Note that |
2596 this does not necessarily imply the entity represented by NODE | 2636 this does not necessarily imply the entity represented by NODE |
2597 has no program source-level definition in this translation unit. For | 2637 has no program source-level definition in this translation unit. For |
2605 | 2645 |
2606 For LABEL_DECL nodes, nonzero if nonlocal gotos to the label are permitted. | 2646 For LABEL_DECL nodes, nonzero if nonlocal gotos to the label are permitted. |
2607 | 2647 |
2608 Also set in some languages for variables, etc., outside the normal | 2648 Also set in some languages for variables, etc., outside the normal |
2609 lexical scope, such as class instance variables. */ | 2649 lexical scope, such as class instance variables. */ |
2610 #define DECL_NONLOCAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.nonlocal_flag) | 2650 #define DECL_NONLOCAL(NODE) \ |
2651 (DECL_COMMON_CHECK (NODE)->decl_common.nonlocal_flag) | |
2611 | 2652 |
2612 /* Used in VAR_DECLs to indicate that the variable is a vtable. | 2653 /* Used in VAR_DECLs to indicate that the variable is a vtable. |
2613 Used in FIELD_DECLs for vtable pointers. | 2654 Used in FIELD_DECLs for vtable pointers. |
2614 Used in FUNCTION_DECLs to indicate that the function is virtual. */ | 2655 Used in FUNCTION_DECLs to indicate that the function is virtual. */ |
2615 #define DECL_VIRTUAL_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.virtual_flag) | 2656 #define DECL_VIRTUAL_P(NODE) \ |
2657 (DECL_COMMON_CHECK (NODE)->decl_common.virtual_flag) | |
2616 | 2658 |
2617 /* Used to indicate that this DECL represents a compiler-generated entity. */ | 2659 /* Used to indicate that this DECL represents a compiler-generated entity. */ |
2618 #define DECL_ARTIFICIAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.artificial_flag) | 2660 #define DECL_ARTIFICIAL(NODE) \ |
2661 (DECL_COMMON_CHECK (NODE)->decl_common.artificial_flag) | |
2619 | 2662 |
2620 /* Additional flags for language-specific uses. */ | 2663 /* Additional flags for language-specific uses. */ |
2621 #define DECL_LANG_FLAG_0(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_0) | 2664 #define DECL_LANG_FLAG_0(NODE) \ |
2622 #define DECL_LANG_FLAG_1(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_1) | 2665 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_0) |
2623 #define DECL_LANG_FLAG_2(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_2) | 2666 #define DECL_LANG_FLAG_1(NODE) \ |
2624 #define DECL_LANG_FLAG_3(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_3) | 2667 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_1) |
2625 #define DECL_LANG_FLAG_4(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_4) | 2668 #define DECL_LANG_FLAG_2(NODE) \ |
2626 #define DECL_LANG_FLAG_5(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_5) | 2669 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_2) |
2627 #define DECL_LANG_FLAG_6(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_6) | 2670 #define DECL_LANG_FLAG_3(NODE) \ |
2628 #define DECL_LANG_FLAG_7(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_7) | 2671 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_3) |
2629 #define DECL_LANG_FLAG_8(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_8) | 2672 #define DECL_LANG_FLAG_4(NODE) \ |
2673 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_4) | |
2674 #define DECL_LANG_FLAG_5(NODE) \ | |
2675 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_5) | |
2676 #define DECL_LANG_FLAG_6(NODE) \ | |
2677 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_6) | |
2678 #define DECL_LANG_FLAG_7(NODE) \ | |
2679 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_7) | |
2680 #define DECL_LANG_FLAG_8(NODE) \ | |
2681 (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_8) | |
2630 | 2682 |
2631 /* Nonzero for a decl which is at file scope. */ | 2683 /* Nonzero for a decl which is at file scope. */ |
2632 #define DECL_FILE_SCOPE_P(EXP) \ | 2684 #define DECL_FILE_SCOPE_P(EXP) \ |
2633 (! DECL_CONTEXT (EXP) \ | 2685 (! DECL_CONTEXT (EXP) \ |
2634 || TREE_CODE (DECL_CONTEXT (EXP)) == TRANSLATION_UNIT_DECL) | 2686 || TREE_CODE (DECL_CONTEXT (EXP)) == TRANSLATION_UNIT_DECL) |
2635 | 2687 |
2636 /* Nonzero for a decl that is decorated using attribute used. | 2688 /* Nonzero for a decl that is decorated using attribute used. |
2637 This indicates compiler tools that this decl needs to be preserved. */ | 2689 This indicates to compiler tools that this decl needs to be preserved. */ |
2638 #define DECL_PRESERVE_P(DECL) \ | 2690 #define DECL_PRESERVE_P(DECL) \ |
2639 DECL_COMMON_CHECK (DECL)->decl_common.preserve_flag | 2691 DECL_COMMON_CHECK (DECL)->decl_common.preserve_flag |
2640 | 2692 |
2641 /* For function local variables of COMPLEX and VECTOR types, | 2693 /* For function local variables of COMPLEX and VECTOR types, |
2642 indicates that the variable is not aliased, and that all | 2694 indicates that the variable is not aliased, and that all |
2687 /* In VAR_DECL, PARM_DECL and RESULT_DECL, this is DECL_BY_REFERENCE. */ | 2739 /* In VAR_DECL, PARM_DECL and RESULT_DECL, this is DECL_BY_REFERENCE. */ |
2688 unsigned decl_by_reference_flag : 1; | 2740 unsigned decl_by_reference_flag : 1; |
2689 /* In VAR_DECL, PARM_DECL and RESULT_DECL, this is DECL_RESTRICTED_P. */ | 2741 /* In VAR_DECL, PARM_DECL and RESULT_DECL, this is DECL_RESTRICTED_P. */ |
2690 unsigned decl_restricted_flag : 1; | 2742 unsigned decl_restricted_flag : 1; |
2691 | 2743 |
2744 /* In VAR_DECL and PARM_DECL set when the decl has been used except for | |
2745 being set. */ | |
2746 unsigned decl_read_flag : 1; | |
2747 | |
2692 /* Padding so that 'off_align' can be on a 32-bit boundary. */ | 2748 /* Padding so that 'off_align' can be on a 32-bit boundary. */ |
2693 unsigned decl_common_unused : 2; | 2749 unsigned decl_common_unused : 1; |
2694 | 2750 |
2695 /* DECL_OFFSET_ALIGN, used only for FIELD_DECLs. */ | 2751 /* DECL_OFFSET_ALIGN, used only for FIELD_DECLs. */ |
2696 unsigned int off_align : 8; | 2752 unsigned int off_align : 8; |
2697 | 2753 |
2698 /* 24-bits unused. */ | 2754 /* 24-bits unused. */ |
2699 | 2755 |
2700 /* DECL_ALIGN. It should have the same size as TYPE_ALIGN. */ | 2756 /* DECL_ALIGN. It should have the same size as TYPE_ALIGN. */ |
2701 unsigned int align; | 2757 unsigned int align; |
2758 | |
2759 /* UID for points-to sets, stable over copying from inlining. */ | |
2760 unsigned int pt_uid; | |
2702 | 2761 |
2703 tree size_unit; | 2762 tree size_unit; |
2704 tree initial; | 2763 tree initial; |
2705 tree attributes; | 2764 tree attributes; |
2706 tree abstract_origin; | 2765 tree abstract_origin; |
2718 been set, the decl itself may not legitimately appear in the function. */ | 2777 been set, the decl itself may not legitimately appear in the function. */ |
2719 #define DECL_HAS_VALUE_EXPR_P(NODE) \ | 2778 #define DECL_HAS_VALUE_EXPR_P(NODE) \ |
2720 (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_2) | 2779 (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_2) |
2721 #define DECL_VALUE_EXPR(NODE) \ | 2780 #define DECL_VALUE_EXPR(NODE) \ |
2722 (decl_value_expr_lookup (DECL_WRTL_CHECK (NODE))) | 2781 (decl_value_expr_lookup (DECL_WRTL_CHECK (NODE))) |
2723 #define SET_DECL_VALUE_EXPR(NODE, VAL) \ | 2782 #define SET_DECL_VALUE_EXPR(NODE, VAL) \ |
2724 (decl_value_expr_insert (DECL_WRTL_CHECK (NODE), VAL)) | 2783 (decl_value_expr_insert (DECL_WRTL_CHECK (NODE), VAL)) |
2725 | 2784 |
2726 /* Holds the RTL expression for the value of a variable or function. | 2785 /* Holds the RTL expression for the value of a variable or function. |
2727 This value can be evaluated lazily for functions, variables with | 2786 This value can be evaluated lazily for functions, variables with |
2728 static storage duration, and labels. */ | 2787 static storage duration, and labels. */ |
2736 | 2795 |
2737 /* Returns nonzero if NODE is a tree node that can contain RTL. */ | 2796 /* Returns nonzero if NODE is a tree node that can contain RTL. */ |
2738 #define HAS_RTL_P(NODE) (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WRTL)) | 2797 #define HAS_RTL_P(NODE) (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WRTL)) |
2739 | 2798 |
2740 /* Returns nonzero if the DECL_RTL for NODE has already been set. */ | 2799 /* Returns nonzero if the DECL_RTL for NODE has already been set. */ |
2741 #define DECL_RTL_SET_P(NODE) (HAS_RTL_P (NODE) && DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl != NULL) | 2800 #define DECL_RTL_SET_P(NODE) \ |
2801 (HAS_RTL_P (NODE) && DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl != NULL) | |
2742 | 2802 |
2743 /* Copy the RTL from NODE1 to NODE2. If the RTL was not set for | 2803 /* Copy the RTL from NODE1 to NODE2. If the RTL was not set for |
2744 NODE1, it will not be set for NODE2; this is a lazy copy. */ | 2804 NODE1, it will not be set for NODE2; this is a lazy copy. */ |
2745 #define COPY_DECL_RTL(NODE1, NODE2) \ | 2805 #define COPY_DECL_RTL(NODE1, NODE2) \ |
2746 (DECL_WRTL_CHECK (NODE2)->decl_with_rtl.rtl = DECL_WRTL_CHECK (NODE1)->decl_with_rtl.rtl) | 2806 (DECL_WRTL_CHECK (NODE2)->decl_with_rtl.rtl \ |
2807 = DECL_WRTL_CHECK (NODE1)->decl_with_rtl.rtl) | |
2747 | 2808 |
2748 /* The DECL_RTL for NODE, if it is set, or NULL, if it is not set. */ | 2809 /* The DECL_RTL for NODE, if it is set, or NULL, if it is not set. */ |
2749 #define DECL_RTL_IF_SET(NODE) (DECL_RTL_SET_P (NODE) ? DECL_RTL (NODE) : NULL) | 2810 #define DECL_RTL_IF_SET(NODE) (DECL_RTL_SET_P (NODE) ? DECL_RTL (NODE) : NULL) |
2750 | 2811 |
2751 /* In VAR_DECL and PARM_DECL nodes, nonzero means declared `register'. */ | 2812 /* In VAR_DECL and PARM_DECL nodes, nonzero means declared `register'. */ |
2763 | 2824 |
2764 /* In a FIELD_DECL, this is the offset, in bits, of the first bit of the | 2825 /* In a FIELD_DECL, this is the offset, in bits, of the first bit of the |
2765 field from DECL_FIELD_OFFSET. This field may be nonzero even for fields | 2826 field from DECL_FIELD_OFFSET. This field may be nonzero even for fields |
2766 that are not bit fields (since DECL_OFFSET_ALIGN may be larger than the | 2827 that are not bit fields (since DECL_OFFSET_ALIGN may be larger than the |
2767 natural alignment of the field's type). */ | 2828 natural alignment of the field's type). */ |
2768 #define DECL_FIELD_BIT_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_offset) | 2829 #define DECL_FIELD_BIT_OFFSET(NODE) \ |
2830 (FIELD_DECL_CHECK (NODE)->field_decl.bit_offset) | |
2769 | 2831 |
2770 /* In a FIELD_DECL, this indicates whether the field was a bit-field and | 2832 /* In a FIELD_DECL, this indicates whether the field was a bit-field and |
2771 if so, the type that was originally specified for it. | 2833 if so, the type that was originally specified for it. |
2772 TREE_TYPE may have been modified (in finish_struct). */ | 2834 TREE_TYPE may have been modified (in finish_struct). */ |
2773 #define DECL_BIT_FIELD_TYPE(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_field_type) | 2835 #define DECL_BIT_FIELD_TYPE(NODE) \ |
2836 (FIELD_DECL_CHECK (NODE)->field_decl.bit_field_type) | |
2774 | 2837 |
2775 /* For a FIELD_DECL in a QUAL_UNION_TYPE, records the expression, which | 2838 /* For a FIELD_DECL in a QUAL_UNION_TYPE, records the expression, which |
2776 if nonzero, indicates that the field occupies the type. */ | 2839 if nonzero, indicates that the field occupies the type. */ |
2777 #define DECL_QUALIFIER(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.qualifier) | 2840 #define DECL_QUALIFIER(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.qualifier) |
2778 | 2841 |
2865 which may be different from the type seen in the program. */ | 2928 which may be different from the type seen in the program. */ |
2866 #define DECL_ARG_TYPE(NODE) (PARM_DECL_CHECK (NODE)->decl_common.initial) | 2929 #define DECL_ARG_TYPE(NODE) (PARM_DECL_CHECK (NODE)->decl_common.initial) |
2867 | 2930 |
2868 /* For PARM_DECL, holds an RTL for the stack slot or register | 2931 /* For PARM_DECL, holds an RTL for the stack slot or register |
2869 where the data was actually passed. */ | 2932 where the data was actually passed. */ |
2870 #define DECL_INCOMING_RTL(NODE) (PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl) | 2933 #define DECL_INCOMING_RTL(NODE) \ |
2934 (PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl) | |
2871 | 2935 |
2872 struct GTY(()) tree_parm_decl { | 2936 struct GTY(()) tree_parm_decl { |
2873 struct tree_decl_with_rtl common; | 2937 struct tree_decl_with_rtl common; |
2874 rtx incoming_rtl; | 2938 rtx incoming_rtl; |
2875 struct var_ann_d *ann; | 2939 struct var_ann_d *ann; |
2876 }; | 2940 }; |
2877 | 2941 |
2878 | 2942 |
2879 /* Nonzero in a decl means that the gimplifier has seen (or placed) | |
2880 this variable in a BIND_EXPR. */ | |
2881 #define DECL_SEEN_IN_BIND_EXPR_P(NODE) \ | |
2882 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.seen_in_bind_expr) | |
2883 | |
2884 /* Used to indicate that the linkage status of this DECL is not yet known, | |
2885 so it should not be output now. */ | |
2886 #define DECL_DEFER_OUTPUT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.defer_output) | |
2887 | |
2888 /* Nonzero for a given ..._DECL node means that no warnings should be | 2943 /* Nonzero for a given ..._DECL node means that no warnings should be |
2889 generated just because this node is unused. */ | 2944 generated just because this node is unused. */ |
2890 #define DECL_IN_SYSTEM_HEADER(NODE) \ | 2945 #define DECL_IN_SYSTEM_HEADER(NODE) \ |
2891 (in_system_header_at (DECL_SOURCE_LOCATION (NODE))) | 2946 (in_system_header_at (DECL_SOURCE_LOCATION (NODE))) |
2892 | 2947 |
2948 /* Used to indicate that the linkage status of this DECL is not yet known, | |
2949 so it should not be output now. */ | |
2950 #define DECL_DEFER_OUTPUT(NODE) \ | |
2951 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.defer_output) | |
2952 | |
2953 /* In a VAR_DECL that's static, | |
2954 nonzero if the space is in the text section. */ | |
2955 #define DECL_IN_TEXT_SECTION(NODE) \ | |
2956 (VAR_DECL_CHECK (NODE)->decl_with_vis.in_text_section) | |
2957 | |
2958 /* In a VAR_DECL that's static, | |
2959 nonzero if it belongs to the global constant pool. */ | |
2960 #define DECL_IN_CONSTANT_POOL(NODE) \ | |
2961 (VAR_DECL_CHECK (NODE)->decl_with_vis.in_constant_pool) | |
2962 | |
2963 /* Nonzero for a given ..._DECL node means that this node should be | |
2964 put in .common, if possible. If a DECL_INITIAL is given, and it | |
2965 is not error_mark_node, then the decl cannot be put in .common. */ | |
2966 #define DECL_COMMON(NODE) \ | |
2967 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.common_flag) | |
2968 | |
2969 /* In a VAR_DECL, nonzero if the decl is a register variable with | |
2970 an explicit asm specification. */ | |
2971 #define DECL_HARD_REGISTER(NODE) \ | |
2972 (VAR_DECL_CHECK (NODE)->decl_with_vis.hard_register) | |
2973 | |
2893 /* Used to indicate that this DECL has weak linkage. */ | 2974 /* Used to indicate that this DECL has weak linkage. */ |
2894 #define DECL_WEAK(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.weak_flag) | 2975 #define DECL_WEAK(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.weak_flag) |
2895 | 2976 |
2896 /* Used to indicate that the DECL is a dllimport. */ | 2977 /* Used to indicate that the DECL is a dllimport. */ |
2897 #define DECL_DLLIMPORT_P(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.dllimport_flag) | 2978 #define DECL_DLLIMPORT_P(NODE) \ |
2979 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.dllimport_flag) | |
2898 | 2980 |
2899 /* Used in a DECL to indicate that, even if it TREE_PUBLIC, it need | 2981 /* Used in a DECL to indicate that, even if it TREE_PUBLIC, it need |
2900 not be put out unless it is needed in this translation unit. | 2982 not be put out unless it is needed in this translation unit. |
2901 Entities like this are shared across translation units (like weak | 2983 Entities like this are shared across translation units (like weak |
2902 entities), but are guaranteed to be generated by any translation | 2984 entities), but are guaranteed to be generated by any translation |
2903 unit that needs them, and therefore need not be put out anywhere | 2985 unit that needs them, and therefore need not be put out anywhere |
2904 where they are not needed. DECL_COMDAT is just a hint to the | 2986 where they are not needed. DECL_COMDAT is just a hint to the |
2905 back-end; it is up to front-ends which set this flag to ensure | 2987 back-end; it is up to front-ends which set this flag to ensure |
2906 that there will never be any harm, other than bloat, in putting out | 2988 that there will never be any harm, other than bloat, in putting out |
2907 something which is DECL_COMDAT. */ | 2989 something which is DECL_COMDAT. */ |
2908 #define DECL_COMDAT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_flag) | 2990 #define DECL_COMDAT(NODE) \ |
2909 | 2991 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_flag) |
2910 #define DECL_COMDAT_GROUP(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_group) | 2992 |
2993 #define DECL_COMDAT_GROUP(NODE) \ | |
2994 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_group) | |
2995 | |
2996 /* Used in TREE_PUBLIC decls to indicate that copies of this DECL in | |
2997 multiple translation units should be merged. */ | |
2998 #define DECL_ONE_ONLY(NODE) (DECL_COMDAT_GROUP (NODE) != NULL_TREE) | |
2911 | 2999 |
2912 /* A replaceable function is one which may be replaced at link-time | 3000 /* A replaceable function is one which may be replaced at link-time |
2913 with an entirely different definition, provided that the | 3001 with an entirely different definition, provided that the |
2914 replacement has the same type. For example, functions declared | 3002 replacement has the same type. For example, functions declared |
2915 with __attribute__((weak)) on most systems are replaceable. | 3003 with __attribute__((weak)) on most systems are replaceable. |
2941 | 3029 |
2942 /* Returns nonzero if the DECL_ASSEMBLER_NAME for NODE has been set. If zero, | 3030 /* Returns nonzero if the DECL_ASSEMBLER_NAME for NODE has been set. If zero, |
2943 the NODE might still have a DECL_ASSEMBLER_NAME -- it just hasn't been set | 3031 the NODE might still have a DECL_ASSEMBLER_NAME -- it just hasn't been set |
2944 yet. */ | 3032 yet. */ |
2945 #define DECL_ASSEMBLER_NAME_SET_P(NODE) \ | 3033 #define DECL_ASSEMBLER_NAME_SET_P(NODE) \ |
2946 (HAS_DECL_ASSEMBLER_NAME_P (NODE) && DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name != NULL_TREE) | 3034 (HAS_DECL_ASSEMBLER_NAME_P (NODE) \ |
3035 && DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name != NULL_TREE) | |
2947 | 3036 |
2948 /* Set the DECL_ASSEMBLER_NAME for NODE to NAME. */ | 3037 /* Set the DECL_ASSEMBLER_NAME for NODE to NAME. */ |
2949 #define SET_DECL_ASSEMBLER_NAME(NODE, NAME) \ | 3038 #define SET_DECL_ASSEMBLER_NAME(NODE, NAME) \ |
2950 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name = (NAME)) | 3039 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name = (NAME)) |
2951 | 3040 |
2964 DECL_ASSEMBLER_NAME (DECL1)) \ | 3053 DECL_ASSEMBLER_NAME (DECL1)) \ |
2965 : (void) 0) | 3054 : (void) 0) |
2966 | 3055 |
2967 /* Records the section name in a section attribute. Used to pass | 3056 /* Records the section name in a section attribute. Used to pass |
2968 the name from decl_attributes to make_function_rtl and make_decl_rtl. */ | 3057 the name from decl_attributes to make_function_rtl and make_decl_rtl. */ |
2969 #define DECL_SECTION_NAME(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.section_name) | 3058 #define DECL_SECTION_NAME(NODE) \ |
3059 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.section_name) | |
3060 | |
3061 /* Nonzero in a decl means that the gimplifier has seen (or placed) | |
3062 this variable in a BIND_EXPR. */ | |
3063 #define DECL_SEEN_IN_BIND_EXPR_P(NODE) \ | |
3064 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.seen_in_bind_expr) | |
2970 | 3065 |
2971 /* Value of the decls's visibility attribute */ | 3066 /* Value of the decls's visibility attribute */ |
2972 #define DECL_VISIBILITY(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility) | 3067 #define DECL_VISIBILITY(NODE) \ |
3068 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility) | |
2973 | 3069 |
2974 /* Nonzero means that the decl had its visibility specified rather than | 3070 /* Nonzero means that the decl had its visibility specified rather than |
2975 being inferred. */ | 3071 being inferred. */ |
2976 #define DECL_VISIBILITY_SPECIFIED(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility_specified) | 3072 #define DECL_VISIBILITY_SPECIFIED(NODE) \ |
2977 | 3073 (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility_specified) |
2978 /* Used in TREE_PUBLIC decls to indicate that copies of this DECL in | 3074 |
2979 multiple translation units should be merged. */ | 3075 /* In a VAR_DECL, the model to use if the data should be allocated from |
2980 #define DECL_ONE_ONLY(NODE) (DECL_COMDAT_GROUP (NODE) != NULL_TREE) | 3076 thread-local storage. */ |
3077 #define DECL_TLS_MODEL(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model) | |
3078 | |
3079 /* In a VAR_DECL, nonzero if the data should be allocated from | |
3080 thread-local storage. */ | |
3081 #define DECL_THREAD_LOCAL_P(NODE) \ | |
3082 (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model >= TLS_MODEL_REAL) | |
3083 | |
3084 /* In a non-local VAR_DECL with static storage duration, true if the | |
3085 variable has an initialization priority. If false, the variable | |
3086 will be initialized at the DEFAULT_INIT_PRIORITY. */ | |
3087 #define DECL_HAS_INIT_PRIORITY_P(NODE) \ | |
3088 (VAR_DECL_CHECK (NODE)->decl_with_vis.init_priority_p) | |
2981 | 3089 |
2982 struct GTY(()) tree_decl_with_vis { | 3090 struct GTY(()) tree_decl_with_vis { |
2983 struct tree_decl_with_rtl common; | 3091 struct tree_decl_with_rtl common; |
2984 tree assembler_name; | 3092 tree assembler_name; |
2985 tree section_name; | 3093 tree section_name; |
2989 unsigned defer_output : 1; | 3097 unsigned defer_output : 1; |
2990 unsigned hard_register : 1; | 3098 unsigned hard_register : 1; |
2991 unsigned thread_local : 1; | 3099 unsigned thread_local : 1; |
2992 unsigned common_flag : 1; | 3100 unsigned common_flag : 1; |
2993 unsigned in_text_section : 1; | 3101 unsigned in_text_section : 1; |
3102 unsigned in_constant_pool : 1; | |
2994 unsigned dllimport_flag : 1; | 3103 unsigned dllimport_flag : 1; |
2995 /* Used by C++. Might become a generic decl flag. */ | |
2996 unsigned shadowed_for_var_p : 1; | |
2997 /* Don't belong to VAR_DECL exclusively. */ | 3104 /* Don't belong to VAR_DECL exclusively. */ |
2998 unsigned weak_flag : 1; | 3105 unsigned weak_flag : 1; |
2999 | 3106 |
3000 unsigned seen_in_bind_expr : 1; | 3107 unsigned seen_in_bind_expr : 1; |
3001 unsigned comdat_flag : 1; | 3108 unsigned comdat_flag : 1; |
3004 /* Belongs to VAR_DECL exclusively. */ | 3111 /* Belongs to VAR_DECL exclusively. */ |
3005 ENUM_BITFIELD(tls_model) tls_model : 3; | 3112 ENUM_BITFIELD(tls_model) tls_model : 3; |
3006 | 3113 |
3007 /* Belong to FUNCTION_DECL exclusively. */ | 3114 /* Belong to FUNCTION_DECL exclusively. */ |
3008 unsigned init_priority_p : 1; | 3115 unsigned init_priority_p : 1; |
3009 /* 15 unused bits. */ | 3116 /* Used by C++ only. Might become a generic decl flag. */ |
3117 unsigned shadowed_for_var_p : 1; | |
3118 /* 14 unused bits. */ | |
3010 }; | 3119 }; |
3011 | |
3012 /* In a VAR_DECL that's static, | |
3013 nonzero if the space is in the text section. */ | |
3014 #define DECL_IN_TEXT_SECTION(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.in_text_section) | |
3015 | |
3016 /* Nonzero for a given ..._DECL node means that this node should be | |
3017 put in .common, if possible. If a DECL_INITIAL is given, and it | |
3018 is not error_mark_node, then the decl cannot be put in .common. */ | |
3019 #define DECL_COMMON(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.common_flag) | |
3020 | |
3021 /* In a VAR_DECL, nonzero if the decl is a register variable with | |
3022 an explicit asm specification. */ | |
3023 #define DECL_HARD_REGISTER(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.hard_register) | |
3024 | 3120 |
3025 extern tree decl_debug_expr_lookup (tree); | 3121 extern tree decl_debug_expr_lookup (tree); |
3026 extern void decl_debug_expr_insert (tree, tree); | 3122 extern void decl_debug_expr_insert (tree, tree); |
3027 /* For VAR_DECL, this is set to either an expression that it was split | 3123 /* For VAR_DECL, this is set to either an expression that it was split |
3028 from (if DECL_DEBUG_EXPR_IS_FROM is true), otherwise a tree_list of | 3124 from (if DECL_DEBUG_EXPR_IS_FROM is true), otherwise a tree_list of |
3039 extern priority_type decl_init_priority_lookup (tree); | 3135 extern priority_type decl_init_priority_lookup (tree); |
3040 extern priority_type decl_fini_priority_lookup (tree); | 3136 extern priority_type decl_fini_priority_lookup (tree); |
3041 extern void decl_init_priority_insert (tree, priority_type); | 3137 extern void decl_init_priority_insert (tree, priority_type); |
3042 extern void decl_fini_priority_insert (tree, priority_type); | 3138 extern void decl_fini_priority_insert (tree, priority_type); |
3043 | 3139 |
3044 /* In a non-local VAR_DECL with static storage duration, true if the | |
3045 variable has an initialization priority. If false, the variable | |
3046 will be initialized at the DEFAULT_INIT_PRIORITY. */ | |
3047 #define DECL_HAS_INIT_PRIORITY_P(NODE) \ | |
3048 (VAR_DECL_CHECK (NODE)->decl_with_vis.init_priority_p) | |
3049 | |
3050 /* For a VAR_DECL or FUNCTION_DECL the initialization priority of | 3140 /* For a VAR_DECL or FUNCTION_DECL the initialization priority of |
3051 NODE. */ | 3141 NODE. */ |
3052 #define DECL_INIT_PRIORITY(NODE) \ | 3142 #define DECL_INIT_PRIORITY(NODE) \ |
3053 (decl_init_priority_lookup (NODE)) | 3143 (decl_init_priority_lookup (NODE)) |
3054 /* Set the initialization priority for NODE to VAL. */ | 3144 /* Set the initialization priority for NODE to VAL. */ |
3071 | 3161 |
3072 /* The largest priority value reserved for use by system runtime | 3162 /* The largest priority value reserved for use by system runtime |
3073 libraries. */ | 3163 libraries. */ |
3074 #define MAX_RESERVED_INIT_PRIORITY 100 | 3164 #define MAX_RESERVED_INIT_PRIORITY 100 |
3075 | 3165 |
3076 /* In a VAR_DECL, the model to use if the data should be allocated from | |
3077 thread-local storage. */ | |
3078 #define DECL_TLS_MODEL(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model) | |
3079 | |
3080 /* In a VAR_DECL, nonzero if the data should be allocated from | |
3081 thread-local storage. */ | |
3082 #define DECL_THREAD_LOCAL_P(NODE) \ | |
3083 (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model >= TLS_MODEL_REAL) | |
3084 | |
3085 #define DECL_VAR_ANN_PTR(NODE) \ | 3166 #define DECL_VAR_ANN_PTR(NODE) \ |
3086 (TREE_CODE (NODE) == VAR_DECL ? &(NODE)->var_decl.ann \ | 3167 (TREE_CODE (NODE) == VAR_DECL ? &(NODE)->var_decl.ann \ |
3087 : TREE_CODE (NODE) == PARM_DECL ? &(NODE)->parm_decl.ann \ | 3168 : TREE_CODE (NODE) == PARM_DECL ? &(NODE)->parm_decl.ann \ |
3088 : TREE_CODE (NODE) == RESULT_DECL ? &(NODE)->result_decl.ann \ | 3169 : TREE_CODE (NODE) == RESULT_DECL ? &(NODE)->result_decl.ann \ |
3089 : NULL) | 3170 : NULL) |
3094 }; | 3175 }; |
3095 | 3176 |
3096 | 3177 |
3097 /* This field is used to reference anything in decl.result and is meant only | 3178 /* This field is used to reference anything in decl.result and is meant only |
3098 for use by the garbage collector. */ | 3179 for use by the garbage collector. */ |
3099 #define DECL_RESULT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.result) | 3180 #define DECL_RESULT_FLD(NODE) \ |
3181 (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.result) | |
3100 | 3182 |
3101 /* The DECL_VINDEX is used for FUNCTION_DECLS in two different ways. | 3183 /* The DECL_VINDEX is used for FUNCTION_DECLS in two different ways. |
3102 Before the struct containing the FUNCTION_DECL is laid out, | 3184 Before the struct containing the FUNCTION_DECL is laid out, |
3103 DECL_VINDEX may point to a FUNCTION_DECL in a base class which | 3185 DECL_VINDEX may point to a FUNCTION_DECL in a base class which |
3104 is the FUNCTION_DECL which this FUNCTION_DECL will replace as a virtual | 3186 is the FUNCTION_DECL which this FUNCTION_DECL will replace as a virtual |
3105 function. When the class is laid out, this pointer is changed | 3187 function. When the class is laid out, this pointer is changed |
3106 to an INTEGER_CST node which is suitable for use as an index | 3188 to an INTEGER_CST node which is suitable for use as an index |
3107 into the virtual function table. | 3189 into the virtual function table. |
3108 C++ also uses this field in namespaces, hence the DECL_NON_COMMON_CHECK. */ | 3190 C++ also uses this field in namespaces, hence the DECL_NON_COMMON_CHECK. */ |
3109 #define DECL_VINDEX(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.vindex) | 3191 #define DECL_VINDEX(NODE) \ |
3192 (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.vindex) | |
3110 | 3193 |
3111 struct GTY(()) | 3194 struct GTY(()) |
3112 tree_decl_non_common { | 3195 tree_decl_non_common { |
3113 struct tree_decl_with_vis common; | 3196 struct tree_decl_with_vis common; |
3114 /* C++ uses this in namespaces. */ | 3197 /* C++ uses this in namespaces. */ |
3123 | 3206 |
3124 /* In FUNCTION_DECL, holds the decl for the return value. */ | 3207 /* In FUNCTION_DECL, holds the decl for the return value. */ |
3125 #define DECL_RESULT(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.result) | 3208 #define DECL_RESULT(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.result) |
3126 | 3209 |
3127 /* In a FUNCTION_DECL, nonzero if the function cannot be inlined. */ | 3210 /* In a FUNCTION_DECL, nonzero if the function cannot be inlined. */ |
3128 #define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.uninlinable) | 3211 #define DECL_UNINLINABLE(NODE) \ |
3212 (FUNCTION_DECL_CHECK (NODE)->function_decl.uninlinable) | |
3129 | 3213 |
3130 /* In a FUNCTION_DECL, the saved representation of the body of the | 3214 /* In a FUNCTION_DECL, the saved representation of the body of the |
3131 entire function. */ | 3215 entire function. */ |
3132 #define DECL_SAVED_TREE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.saved_tree) | 3216 #define DECL_SAVED_TREE(NODE) \ |
3217 (FUNCTION_DECL_CHECK (NODE)->decl_non_common.saved_tree) | |
3133 | 3218 |
3134 /* Nonzero in a FUNCTION_DECL means this function should be treated | 3219 /* Nonzero in a FUNCTION_DECL means this function should be treated |
3135 as if it were a malloc, meaning it returns a pointer that is | 3220 as if it were a malloc, meaning it returns a pointer that is |
3136 not an alias. */ | 3221 not an alias. */ |
3137 #define DECL_IS_MALLOC(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.malloc_flag) | 3222 #define DECL_IS_MALLOC(NODE) \ |
3223 (FUNCTION_DECL_CHECK (NODE)->function_decl.malloc_flag) | |
3138 | 3224 |
3139 /* Nonzero in a FUNCTION_DECL means this function should be treated as | 3225 /* Nonzero in a FUNCTION_DECL means this function should be treated as |
3140 C++ operator new, meaning that it returns a pointer for which we | 3226 C++ operator new, meaning that it returns a pointer for which we |
3141 should not use type based aliasing. */ | 3227 should not use type based aliasing. */ |
3142 #define DECL_IS_OPERATOR_NEW(NODE) \ | 3228 #define DECL_IS_OPERATOR_NEW(NODE) \ |
3161 (FUNCTION_DECL_CHECK (NODE)->function_decl.looping_const_or_pure_flag) | 3247 (FUNCTION_DECL_CHECK (NODE)->function_decl.looping_const_or_pure_flag) |
3162 | 3248 |
3163 /* Nonzero in a FUNCTION_DECL means this function should be treated | 3249 /* Nonzero in a FUNCTION_DECL means this function should be treated |
3164 as "novops" function (function that does not read global memory, | 3250 as "novops" function (function that does not read global memory, |
3165 but may have arbitrary side effects). */ | 3251 but may have arbitrary side effects). */ |
3166 #define DECL_IS_NOVOPS(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.novops_flag) | 3252 #define DECL_IS_NOVOPS(NODE) \ |
3253 (FUNCTION_DECL_CHECK (NODE)->function_decl.novops_flag) | |
3167 | 3254 |
3168 /* Used in FUNCTION_DECLs to indicate that they should be run automatically | 3255 /* Used in FUNCTION_DECLs to indicate that they should be run automatically |
3169 at the beginning or end of execution. */ | 3256 at the beginning or end of execution. */ |
3170 #define DECL_STATIC_CONSTRUCTOR(NODE) \ | 3257 #define DECL_STATIC_CONSTRUCTOR(NODE) \ |
3171 (FUNCTION_DECL_CHECK (NODE)->function_decl.static_ctor_flag) | 3258 (FUNCTION_DECL_CHECK (NODE)->function_decl.static_ctor_flag) |
3211 #define DECL_DISREGARD_INLINE_LIMITS(NODE) \ | 3298 #define DECL_DISREGARD_INLINE_LIMITS(NODE) \ |
3212 (FUNCTION_DECL_CHECK (NODE)->function_decl.disregard_inline_limits) | 3299 (FUNCTION_DECL_CHECK (NODE)->function_decl.disregard_inline_limits) |
3213 | 3300 |
3214 /* For FUNCTION_DECL, this holds a pointer to a structure ("struct function") | 3301 /* For FUNCTION_DECL, this holds a pointer to a structure ("struct function") |
3215 that describes the status of this function. */ | 3302 that describes the status of this function. */ |
3216 #define DECL_STRUCT_FUNCTION(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.f) | 3303 #define DECL_STRUCT_FUNCTION(NODE) \ |
3304 (FUNCTION_DECL_CHECK (NODE)->function_decl.f) | |
3217 | 3305 |
3218 /* In a FUNCTION_DECL, nonzero means a built in function. */ | 3306 /* In a FUNCTION_DECL, nonzero means a built in function. */ |
3219 #define DECL_BUILT_IN(NODE) (DECL_BUILT_IN_CLASS (NODE) != NOT_BUILT_IN) | 3307 #define DECL_BUILT_IN(NODE) (DECL_BUILT_IN_CLASS (NODE) != NOT_BUILT_IN) |
3220 | 3308 |
3221 /* For a builtin function, identify which part of the compiler defined it. */ | 3309 /* For a builtin function, identify which part of the compiler defined it. */ |
3223 (FUNCTION_DECL_CHECK (NODE)->function_decl.built_in_class) | 3311 (FUNCTION_DECL_CHECK (NODE)->function_decl.built_in_class) |
3224 | 3312 |
3225 /* In FUNCTION_DECL, a chain of ..._DECL nodes. | 3313 /* In FUNCTION_DECL, a chain of ..._DECL nodes. |
3226 VAR_DECL and PARM_DECL reserve the arguments slot for language-specific | 3314 VAR_DECL and PARM_DECL reserve the arguments slot for language-specific |
3227 uses. */ | 3315 uses. */ |
3228 #define DECL_ARGUMENTS(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.arguments) | 3316 #define DECL_ARGUMENTS(NODE) \ |
3229 #define DECL_ARGUMENT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.arguments) | 3317 (FUNCTION_DECL_CHECK (NODE)->decl_non_common.arguments) |
3318 #define DECL_ARGUMENT_FLD(NODE) \ | |
3319 (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.arguments) | |
3230 | 3320 |
3231 /* In FUNCTION_DECL, the function specific target options to use when compiling | 3321 /* In FUNCTION_DECL, the function specific target options to use when compiling |
3232 this function. */ | 3322 this function. */ |
3233 #define DECL_FUNCTION_SPECIFIC_TARGET(NODE) \ | 3323 #define DECL_FUNCTION_SPECIFIC_TARGET(NODE) \ |
3234 (FUNCTION_DECL_CHECK (NODE)->function_decl.function_specific_target) | 3324 (FUNCTION_DECL_CHECK (NODE)->function_decl.function_specific_target) |
3284 | 3374 |
3285 /* 3 bits left */ | 3375 /* 3 bits left */ |
3286 }; | 3376 }; |
3287 | 3377 |
3288 /* For a TYPE_DECL, holds the "original" type. (TREE_TYPE has the copy.) */ | 3378 /* For a TYPE_DECL, holds the "original" type. (TREE_TYPE has the copy.) */ |
3289 #define DECL_ORIGINAL_TYPE(NODE) (TYPE_DECL_CHECK (NODE)->decl_non_common.result) | 3379 #define DECL_ORIGINAL_TYPE(NODE) \ |
3380 (TYPE_DECL_CHECK (NODE)->decl_non_common.result) | |
3290 | 3381 |
3291 /* In a TYPE_DECL nonzero means the detail info about this type is not dumped | 3382 /* In a TYPE_DECL nonzero means the detail info about this type is not dumped |
3292 into stabs. Instead it will generate cross reference ('x') of names. | 3383 into stabs. Instead it will generate cross reference ('x') of names. |
3293 This uses the same flag as DECL_EXTERNAL. */ | 3384 This uses the same flag as DECL_EXTERNAL. */ |
3294 #define TYPE_DECL_SUPPRESS_DEBUG(NODE) \ | 3385 #define TYPE_DECL_SUPPRESS_DEBUG(NODE) \ |
3718 no TREE_CHAIN. Language-independent code should not assume | 3809 no TREE_CHAIN. Language-independent code should not assume |
3719 anything else about this node. */ | 3810 anything else about this node. */ |
3720 #define void_list_node global_trees[TI_VOID_LIST_NODE] | 3811 #define void_list_node global_trees[TI_VOID_LIST_NODE] |
3721 | 3812 |
3722 #define main_identifier_node global_trees[TI_MAIN_IDENTIFIER] | 3813 #define main_identifier_node global_trees[TI_MAIN_IDENTIFIER] |
3723 #define MAIN_NAME_P(NODE) (IDENTIFIER_NODE_CHECK (NODE) == main_identifier_node) | 3814 #define MAIN_NAME_P(NODE) \ |
3815 (IDENTIFIER_NODE_CHECK (NODE) == main_identifier_node) | |
3724 | 3816 |
3725 /* Optimization options (OPTIMIZATION_NODE) to use for default and current | 3817 /* Optimization options (OPTIMIZATION_NODE) to use for default and current |
3726 functions. */ | 3818 functions. */ |
3727 #define optimization_default_node global_trees[TI_OPTIMIZATION_DEFAULT] | 3819 #define optimization_default_node global_trees[TI_OPTIMIZATION_DEFAULT] |
3728 #define optimization_current_node global_trees[TI_OPTIMIZATION_CURRENT] | 3820 #define optimization_current_node global_trees[TI_OPTIMIZATION_CURRENT] |
3898 | 3990 |
3899 extern tree build_var_debug_value_stat (tree, tree MEM_STAT_DECL); | 3991 extern tree build_var_debug_value_stat (tree, tree MEM_STAT_DECL); |
3900 #define build_var_debug_value(t1,t2) \ | 3992 #define build_var_debug_value(t1,t2) \ |
3901 build_var_debug_value_stat (t1,t2 MEM_STAT_INFO) | 3993 build_var_debug_value_stat (t1,t2 MEM_STAT_INFO) |
3902 | 3994 |
3995 /* Constructs double_int from tree CST. */ | |
3996 | |
3997 static inline double_int | |
3998 tree_to_double_int (const_tree cst) | |
3999 { | |
4000 return TREE_INT_CST (cst); | |
4001 } | |
4002 | |
4003 extern tree double_int_to_tree (tree, double_int); | |
4004 extern bool double_int_fits_to_tree_p (const_tree, double_int); | |
4005 | |
4006 /* Create an INT_CST node with a CST value zero extended. */ | |
4007 | |
4008 static inline tree | |
4009 build_int_cstu (tree type, unsigned HOST_WIDE_INT cst) | |
4010 { | |
4011 return double_int_to_tree (type, uhwi_to_double_int (cst)); | |
4012 } | |
4013 | |
3903 extern tree build_int_cst (tree, HOST_WIDE_INT); | 4014 extern tree build_int_cst (tree, HOST_WIDE_INT); |
3904 extern tree build_int_cst_type (tree, HOST_WIDE_INT); | 4015 extern tree build_int_cst_type (tree, HOST_WIDE_INT); |
3905 extern tree build_int_cstu (tree, unsigned HOST_WIDE_INT); | |
3906 extern tree build_int_cst_wide (tree, unsigned HOST_WIDE_INT, HOST_WIDE_INT); | 4016 extern tree build_int_cst_wide (tree, unsigned HOST_WIDE_INT, HOST_WIDE_INT); |
3907 extern tree build_int_cst_wide_type (tree, | |
3908 unsigned HOST_WIDE_INT, HOST_WIDE_INT); | |
3909 extern tree build_vector (tree, tree); | 4017 extern tree build_vector (tree, tree); |
3910 extern tree build_vector_from_ctor (tree, VEC(constructor_elt,gc) *); | 4018 extern tree build_vector_from_ctor (tree, VEC(constructor_elt,gc) *); |
3911 extern tree build_constructor (tree, VEC(constructor_elt,gc) *); | 4019 extern tree build_constructor (tree, VEC(constructor_elt,gc) *); |
3912 extern tree build_constructor_single (tree, tree, tree); | 4020 extern tree build_constructor_single (tree, tree, tree); |
3913 extern tree build_constructor_from_list (tree, tree); | 4021 extern tree build_constructor_from_list (tree, tree); |
3943 extern tree make_signed_type (int); | 4051 extern tree make_signed_type (int); |
3944 extern tree make_unsigned_type (int); | 4052 extern tree make_unsigned_type (int); |
3945 extern tree signed_or_unsigned_type_for (int, tree); | 4053 extern tree signed_or_unsigned_type_for (int, tree); |
3946 extern tree signed_type_for (tree); | 4054 extern tree signed_type_for (tree); |
3947 extern tree unsigned_type_for (tree); | 4055 extern tree unsigned_type_for (tree); |
3948 extern void initialize_sizetypes (bool); | 4056 extern void initialize_sizetypes (void); |
3949 extern void set_sizetype (tree); | 4057 extern void set_sizetype (tree); |
3950 extern void fixup_unsigned_type (tree); | 4058 extern void fixup_unsigned_type (tree); |
3951 extern tree build_pointer_type_for_mode (tree, enum machine_mode, bool); | 4059 extern tree build_pointer_type_for_mode (tree, enum machine_mode, bool); |
3952 extern tree build_pointer_type (tree); | 4060 extern tree build_pointer_type (tree); |
3953 extern tree build_reference_type_for_mode (tree, enum machine_mode, bool); | 4061 extern tree build_reference_type_for_mode (tree, enum machine_mode, bool); |
4313 | 4421 |
4314 #define round_up(T,N) round_up_loc (UNKNOWN_LOCATION, T, N) | 4422 #define round_up(T,N) round_up_loc (UNKNOWN_LOCATION, T, N) |
4315 extern tree round_up_loc (location_t, tree, int); | 4423 extern tree round_up_loc (location_t, tree, int); |
4316 #define round_down(T,N) round_down_loc (UNKNOWN_LOCATION, T, N) | 4424 #define round_down(T,N) round_down_loc (UNKNOWN_LOCATION, T, N) |
4317 extern tree round_down_loc (location_t, tree, int); | 4425 extern tree round_down_loc (location_t, tree, int); |
4318 extern tree get_pending_sizes (void); | 4426 extern VEC(tree,gc) *get_pending_sizes (void); |
4319 extern void put_pending_size (tree); | 4427 extern void put_pending_size (tree); |
4320 extern void put_pending_sizes (tree); | 4428 extern void put_pending_sizes (VEC(tree,gc) *); |
4321 extern void finalize_size_functions (void); | 4429 extern void finalize_size_functions (void); |
4322 | 4430 |
4323 /* Type for sizes of data-type. */ | 4431 /* Type for sizes of data-type. */ |
4324 | 4432 |
4325 #define BITS_PER_UNIT_LOG \ | 4433 #define BITS_PER_UNIT_LOG \ |
4358 | 4466 |
4359 /* Returns the number of FIELD_DECLs in a type. */ | 4467 /* Returns the number of FIELD_DECLs in a type. */ |
4360 | 4468 |
4361 extern int fields_length (const_tree); | 4469 extern int fields_length (const_tree); |
4362 | 4470 |
4471 /* Returns the first FIELD_DECL in a type. */ | |
4472 | |
4473 extern tree first_field (const_tree); | |
4474 | |
4363 /* Given an initializer INIT, return TRUE if INIT is zero or some | 4475 /* Given an initializer INIT, return TRUE if INIT is zero or some |
4364 aggregate of zeros. Otherwise return FALSE. */ | 4476 aggregate of zeros. Otherwise return FALSE. */ |
4365 | 4477 |
4366 extern bool initializer_zerop (const_tree); | 4478 extern bool initializer_zerop (const_tree); |
4367 | |
4368 /* Given a CONSTRUCTOR CTOR, return the elements as a TREE_LIST. */ | |
4369 | |
4370 extern tree ctor_to_list (tree); | |
4371 | 4479 |
4372 /* Given a CONSTRUCTOR CTOR, return the element values as a vector. */ | 4480 /* Given a CONSTRUCTOR CTOR, return the element values as a vector. */ |
4373 | 4481 |
4374 extern VEC(tree,gc) *ctor_to_vec (tree); | 4482 extern VEC(tree,gc) *ctor_to_vec (tree); |
4375 | 4483 |
4702 extern tree upper_bound_in_type (tree, tree); | 4810 extern tree upper_bound_in_type (tree, tree); |
4703 extern tree lower_bound_in_type (tree, tree); | 4811 extern tree lower_bound_in_type (tree, tree); |
4704 extern int operand_equal_for_phi_arg_p (const_tree, const_tree); | 4812 extern int operand_equal_for_phi_arg_p (const_tree, const_tree); |
4705 extern tree call_expr_arg (tree, int); | 4813 extern tree call_expr_arg (tree, int); |
4706 extern tree *call_expr_argp (tree, int); | 4814 extern tree *call_expr_argp (tree, int); |
4707 extern tree call_expr_arglist (tree); | |
4708 extern tree create_artificial_label (location_t); | 4815 extern tree create_artificial_label (location_t); |
4709 extern const char *get_name (tree); | 4816 extern const char *get_name (tree); |
4710 extern bool stdarg_p (tree); | 4817 extern bool stdarg_p (tree); |
4711 extern bool prototype_p (tree); | 4818 extern bool prototype_p (tree); |
4712 extern bool auto_var_in_fn_p (const_tree, const_tree); | 4819 extern bool auto_var_in_fn_p (const_tree, const_tree); |
4713 extern tree build_low_bits_mask (tree, unsigned); | 4820 extern tree build_low_bits_mask (tree, unsigned); |
4714 extern tree tree_strip_nop_conversions (tree); | 4821 extern tree tree_strip_nop_conversions (tree); |
4715 extern tree tree_strip_sign_nop_conversions (tree); | 4822 extern tree tree_strip_sign_nop_conversions (tree); |
4716 extern tree lhd_gcc_personality (void); | 4823 extern tree lhd_gcc_personality (void); |
4824 extern void assign_assembler_name_if_neeeded (tree); | |
4825 | |
4717 | 4826 |
4718 /* In cgraph.c */ | 4827 /* In cgraph.c */ |
4719 extern void change_decl_assembler_name (tree, tree); | 4828 extern void change_decl_assembler_name (tree, tree); |
4720 | 4829 |
4721 /* In gimplify.c */ | 4830 /* In gimplify.c */ |
4802 extern void fold_defer_overflow_warnings (void); | 4911 extern void fold_defer_overflow_warnings (void); |
4803 extern void fold_undefer_overflow_warnings (bool, const_gimple, int); | 4912 extern void fold_undefer_overflow_warnings (bool, const_gimple, int); |
4804 extern void fold_undefer_and_ignore_overflow_warnings (void); | 4913 extern void fold_undefer_and_ignore_overflow_warnings (void); |
4805 extern bool fold_deferring_overflow_warnings_p (void); | 4914 extern bool fold_deferring_overflow_warnings_p (void); |
4806 | 4915 |
4807 extern tree force_fit_type_double (tree, unsigned HOST_WIDE_INT, HOST_WIDE_INT, | |
4808 int, bool); | |
4809 | |
4810 extern int fit_double_type (unsigned HOST_WIDE_INT, HOST_WIDE_INT, | |
4811 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, const_tree); | |
4812 extern int add_double_with_sign (unsigned HOST_WIDE_INT, HOST_WIDE_INT, | |
4813 unsigned HOST_WIDE_INT, HOST_WIDE_INT, | |
4814 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, | |
4815 bool); | |
4816 #define add_double(l1,h1,l2,h2,lv,hv) \ | |
4817 add_double_with_sign (l1, h1, l2, h2, lv, hv, false) | |
4818 extern int neg_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT, | |
4819 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *); | |
4820 extern int mul_double_with_sign (unsigned HOST_WIDE_INT, HOST_WIDE_INT, | |
4821 unsigned HOST_WIDE_INT, HOST_WIDE_INT, | |
4822 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, | |
4823 bool); | |
4824 #define mul_double(l1,h1,l2,h2,lv,hv) \ | |
4825 mul_double_with_sign (l1, h1, l2, h2, lv, hv, false) | |
4826 extern void lshift_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT, | |
4827 HOST_WIDE_INT, unsigned int, | |
4828 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, int); | |
4829 extern void rshift_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT, | |
4830 HOST_WIDE_INT, unsigned int, | |
4831 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *, int); | |
4832 extern void lrotate_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT, | |
4833 HOST_WIDE_INT, unsigned int, | |
4834 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *); | |
4835 extern void rrotate_double (unsigned HOST_WIDE_INT, HOST_WIDE_INT, | |
4836 HOST_WIDE_INT, unsigned int, | |
4837 unsigned HOST_WIDE_INT *, HOST_WIDE_INT *); | |
4838 | |
4839 extern int div_and_round_double (enum tree_code, int, unsigned HOST_WIDE_INT, | |
4840 HOST_WIDE_INT, unsigned HOST_WIDE_INT, | |
4841 HOST_WIDE_INT, unsigned HOST_WIDE_INT *, | |
4842 HOST_WIDE_INT *, unsigned HOST_WIDE_INT *, | |
4843 HOST_WIDE_INT *); | |
4844 | |
4845 enum operand_equal_flag | 4916 enum operand_equal_flag |
4846 { | 4917 { |
4847 OEP_ONLY_CONST = 1, | 4918 OEP_ONLY_CONST = 1, |
4848 OEP_PURE_SAME = 2 | 4919 OEP_PURE_SAME = 2 |
4849 }; | 4920 }; |
4989 | 5060 |
4990 extern int real_onep (const_tree); | 5061 extern int real_onep (const_tree); |
4991 extern int real_twop (const_tree); | 5062 extern int real_twop (const_tree); |
4992 extern int real_minus_onep (const_tree); | 5063 extern int real_minus_onep (const_tree); |
4993 extern void init_ttree (void); | 5064 extern void init_ttree (void); |
4994 extern void build_common_tree_nodes (bool, bool); | 5065 extern void build_common_tree_nodes (bool); |
4995 extern void build_common_tree_nodes_2 (int); | 5066 extern void build_common_tree_nodes_2 (int); |
4996 extern void build_common_builtin_nodes (void); | 5067 extern void build_common_builtin_nodes (void); |
4997 extern tree build_nonstandard_integer_type (unsigned HOST_WIDE_INT, int); | 5068 extern tree build_nonstandard_integer_type (unsigned HOST_WIDE_INT, int); |
4998 extern tree build_range_type (tree, tree, tree); | 5069 extern tree build_range_type (tree, tree, tree); |
4999 extern bool subrange_type_for_debug_p (const_tree, tree *, tree *); | 5070 extern bool subrange_type_for_debug_p (const_tree, tree *, tree *); |
5006 extern tree *tree_block (tree); | 5077 extern tree *tree_block (tree); |
5007 extern location_t *block_nonartificial_location (tree); | 5078 extern location_t *block_nonartificial_location (tree); |
5008 extern location_t tree_nonartificial_location (tree); | 5079 extern location_t tree_nonartificial_location (tree); |
5009 | 5080 |
5010 extern tree block_ultimate_origin (const_tree); | 5081 extern tree block_ultimate_origin (const_tree); |
5082 | |
5083 extern tree get_binfo_at_offset (tree, HOST_WIDE_INT, tree); | |
5011 | 5084 |
5012 /* In tree-nested.c */ | 5085 /* In tree-nested.c */ |
5013 extern tree build_addr (tree, tree); | 5086 extern tree build_addr (tree, tree); |
5014 | 5087 |
5015 /* In function.c */ | 5088 /* In function.c */ |
5089 #define ECF_NOVOPS (1 << 9) | 5162 #define ECF_NOVOPS (1 << 9) |
5090 | 5163 |
5091 extern int flags_from_decl_or_type (const_tree); | 5164 extern int flags_from_decl_or_type (const_tree); |
5092 extern int call_expr_flags (const_tree); | 5165 extern int call_expr_flags (const_tree); |
5093 | 5166 |
5167 /* Call argument flags. */ | |
5168 | |
5169 /* Nonzero if the argument is not dereferenced recursively, thus only | |
5170 directly reachable memory is read or written. */ | |
5171 #define EAF_DIRECT (1 << 0) | |
5172 /* Nonzero if memory reached by the argument is not clobbered. */ | |
5173 #define EAF_NOCLOBBER (1 << 1) | |
5174 /* Nonzero if the argument does not escape. */ | |
5175 #define EAF_NOESCAPE (1 << 2) | |
5176 /* Nonzero if the argument is not used by the function. */ | |
5177 #define EAF_UNUSED (1 << 3) | |
5178 | |
5179 /* Call return flags. */ | |
5180 | |
5181 /* Mask for the argument number that is returned. Lower two bits of | |
5182 the return flags, encodes argument slots zero to three. */ | |
5183 #define ERF_RETURN_ARG_MASK (3) | |
5184 /* Nonzero if the return value is equal to the argument number | |
5185 flags & ERF_RETURN_ARG_MASK. */ | |
5186 #define ERF_RETURNS_ARG (1 << 2) | |
5187 /* Nonzero if the return value does not alias with anything. Functions | |
5188 with the malloc attribute have this set on their return value. */ | |
5189 #define ERF_NOALIAS (1 << 3) | |
5190 | |
5094 extern int setjmp_call_p (const_tree); | 5191 extern int setjmp_call_p (const_tree); |
5095 extern bool gimple_alloca_call_p (const_gimple); | 5192 extern bool gimple_alloca_call_p (const_gimple); |
5096 extern bool alloca_call_p (const_tree); | 5193 extern bool alloca_call_p (const_tree); |
5097 extern bool must_pass_in_stack_var_size (enum machine_mode, const_tree); | 5194 extern bool must_pass_in_stack_var_size (enum machine_mode, const_tree); |
5098 extern bool must_pass_in_stack_var_size_or_pad (enum machine_mode, const_tree); | 5195 extern bool must_pass_in_stack_var_size_or_pad (enum machine_mode, const_tree); |
5120 extern void fixup_signed_type (tree); | 5217 extern void fixup_signed_type (tree); |
5121 extern void internal_reference_types (void); | 5218 extern void internal_reference_types (void); |
5122 extern unsigned int update_alignment_for_field (record_layout_info, tree, | 5219 extern unsigned int update_alignment_for_field (record_layout_info, tree, |
5123 unsigned int); | 5220 unsigned int); |
5124 /* varasm.c */ | 5221 /* varasm.c */ |
5222 extern tree tree_output_constant_def (tree); | |
5125 extern void make_decl_rtl (tree); | 5223 extern void make_decl_rtl (tree); |
5224 extern rtx make_decl_rtl_for_debug (tree); | |
5126 extern void make_decl_one_only (tree, tree); | 5225 extern void make_decl_one_only (tree, tree); |
5127 extern int supports_one_only (void); | 5226 extern int supports_one_only (void); |
5128 extern void resolve_unique_section (tree, int, int); | 5227 extern void resolve_unique_section (tree, int, int); |
5129 extern void mark_referenced (tree); | 5228 extern void mark_referenced (tree); |
5130 extern void mark_decl_referenced (tree); | 5229 extern void mark_decl_referenced (tree); |
5301 | 5400 |
5302 /* In tree-ssa.c */ | 5401 /* In tree-ssa.c */ |
5303 | 5402 |
5304 tree target_for_debug_bind (tree); | 5403 tree target_for_debug_bind (tree); |
5305 | 5404 |
5306 /* In tree-ssa-ccp.c */ | |
5307 extern tree maybe_fold_offset_to_reference (location_t, tree, tree, tree); | |
5308 extern tree maybe_fold_offset_to_address (location_t, tree, tree, tree); | |
5309 extern tree maybe_fold_stmt_addition (location_t, tree, tree, tree); | |
5310 | |
5311 /* In tree-ssa-address.c. */ | 5405 /* In tree-ssa-address.c. */ |
5312 extern tree tree_mem_ref_addr (tree, tree); | 5406 extern tree tree_mem_ref_addr (tree, tree); |
5313 extern void copy_mem_ref_info (tree, tree); | 5407 extern void copy_mem_ref_info (tree, tree); |
5314 | 5408 |
5315 /* In tree-vrp.c */ | 5409 /* In tree-vrp.c */ |
5325 extern tree build_personality_function (const char *); | 5419 extern tree build_personality_function (const char *); |
5326 | 5420 |
5327 /* In tree-inline.c. */ | 5421 /* In tree-inline.c. */ |
5328 | 5422 |
5329 void init_inline_once (void); | 5423 void init_inline_once (void); |
5330 | |
5331 /* In ipa-reference.c. Used for parsing attributes of asm code. */ | |
5332 extern GTY(()) tree memory_identifier_string; | |
5333 | 5424 |
5334 /* Compute the number of operands in an expression node NODE. For | 5425 /* Compute the number of operands in an expression node NODE. For |
5335 tcc_vl_exp nodes like CALL_EXPRs, this is stored in the node itself, | 5426 tcc_vl_exp nodes like CALL_EXPRs, this is stored in the node itself, |
5336 otherwise it is looked up from the node's code. */ | 5427 otherwise it is looked up from the node's code. */ |
5337 static inline int | 5428 static inline int |