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