Deleted Added
sdiff udiff text old ( 50397 ) new ( 52284 )
full compact
1/* Front-end tree definitions for GNU compiler.
2 Copyright (C) 1989, 93-98, 1999 Free Software Foundation, Inc.
3
4This file is part of GNU CC.
5
6GNU CC is free software; you can redistribute it and/or modify
7it under the terms of the GNU General Public License as published by
8the Free Software Foundation; either version 2, or (at your option)
9any later version.
10

--- 85 unchanged lines hidden (view full) ---

96 BUILT_IN_SAVEREGS,
97 BUILT_IN_CLASSIFY_TYPE,
98 BUILT_IN_NEXT_ARG,
99 BUILT_IN_ARGS_INFO,
100 BUILT_IN_CONSTANT_P,
101 BUILT_IN_FRAME_ADDRESS,
102 BUILT_IN_RETURN_ADDRESS,
103 BUILT_IN_AGGREGATE_INCOMING_ADDRESS,
104 BUILT_IN_APPLY_ARGS,
105 BUILT_IN_APPLY,
106 BUILT_IN_RETURN,
107 BUILT_IN_SETJMP,
108 BUILT_IN_LONGJMP,
109 BUILT_IN_TRAP,
110
111 /* Various hooks for the DWARF 2 __throw routine. */
112 BUILT_IN_UNWIND_INIT,
113 BUILT_IN_DWARF_CFA,
114 BUILT_IN_DWARF_FP_REGNUM,
115 BUILT_IN_DWARF_REG_SIZE,
116 BUILT_IN_FROB_RETURN_ADDR,
117 BUILT_IN_EXTRACT_RETURN_ADDR,
118 BUILT_IN_EH_RETURN,
119
120 /* C++ extensions */
121 BUILT_IN_NEW,
122 BUILT_IN_VEC_NEW,
123 BUILT_IN_DELETE,
124 BUILT_IN_VEC_DELETE,
125
126 /* Upper bound on non-language-specific builtins. */

--- 91 unchanged lines hidden (view full) ---

218 public_flag:
219
220 TREE_OVERFLOW in
221 INTEGER_CST, REAL_CST, COMPLEX_CST
222 TREE_PUBLIC in
223 VAR_DECL or FUNCTION_DECL
224 TREE_VIA_PUBLIC in
225 TREE_LIST or TREE_VEC
226 EXPR_WFL_EMIT_LINE_NOTE in
227 EXPR_WITH_FILE_LOCATION
228
229 private_flag:
230
231 TREE_VIA_PRIVATE in
232 TREE_LIST or TREE_VEC
233 TREE_PRIVATE in
234 ??? unspecified nodes
235

--- 86 unchanged lines hidden (view full) ---

322#define CHAIN_CHECK(t, c1, c2) (t)
323#endif
324
325#define TREE_CHECK(t, code) DO_CHECK (tree_check, t, code)
326#define TREE_CHECK1(t, code) DO_CHECK1 (tree_check, t, code)
327
328#include "tree-check.h"
329
330#define TYPE_CHECK(tree) DO_CHECK (tree_class_check, tree, 't')
331#define TYPE_CHECK1(tree) DO_CHECK1 (tree_class_check, tree, 't')
332#define DECL_CHECK(t) DO_CHECK (tree_class_check, t, 'd')
333#define DECL_CHECK1(t) DO_CHECK1 (tree_class_check, t, 'd')
334#define CST_CHECK(t) DO_CHECK (tree_class_check, t, 'c')
335#define CST_CHECK1(t) DO_CHECK1 (tree_class_check, t, 'c')
336#define EXPR_CHECK(t) DO_CHECK (expr_check, t, 0)
337
338/* Chained checks. The last check has to succeed, the others may fail. */
339#define CST_OR_CONSTRUCTOR_CHECK(t) \

--- 339 unchanged lines hidden (view full) ---

679
680/* In a CONSTRUCTOR node. */
681#define CONSTRUCTOR_ELTS(NODE) TREE_OPERAND (NODE, 1)
682
683/* In ordinary expression nodes. */
684#define TREE_OPERAND(NODE, I) (EXPR_CHECK (NODE)->exp.operands[I])
685#define TREE_COMPLEXITY(NODE) (EXPR_CHECK (NODE)->exp.complexity)
686
687/* In a LABELED_BLOCK_EXPR node. */
688#define LABELED_BLOCK_LABEL(NODE) TREE_OPERAND (NODE, 0)
689#define LABELED_BLOCK_BODY(NODE) TREE_OPERAND (NODE, 1)
690
691/* In a EXIT_BLOCK_EXPR node. */
692#define EXIT_BLOCK_LABELED_BLOCK(NODE) TREE_OPERAND (NODE, 0)
693#define EXIT_BLOCK_RETURN(NODE) TREE_OPERAND (NODE, 1)
694
695/* In a LOOP_EXPR node. */
696#define LOOP_EXPR_BODY(NODE) TREE_OPERAND (NODE, 0)
697
698/* In a EXPR_WITH_FILE_LOCATION node. */
699#define EXPR_WFL_NODE(NODE) TREE_OPERAND((NODE), 0)
700#define EXPR_WFL_FILENAME(NODE) (IDENTIFIER_POINTER ((NODE)->common.chain))
701#define EXPR_WFL_FILENAME_NODE(NODE) ((NODE)->common.chain)
702#define EXPR_WFL_LINENO(NODE) (EXPR_CHECK (NODE)->exp.complexity >> 12)
703#define EXPR_WFL_COLNO(NODE) (EXPR_CHECK (NODE)->exp.complexity & 0xfff)
704#define EXPR_WFL_LINECOL(NODE) (EXPR_CHECK (NODE)->exp.complexity)
705#define EXPR_WFL_SET_LINECOL(NODE, LINE, COL) \
706 (EXPR_WFL_LINECOL(NODE) = ((LINE) << 12) | ((COL) & 0xfff))
707#define EXPR_WFL_EMIT_LINE_NOTE(NODE) ((NODE)->common.public_flag)
708
709struct tree_exp
710{
711 char common[sizeof (struct tree_common)];
712 int complexity;
713 union tree_node *operands[1];
714};
715

--- 66 unchanged lines hidden (view full) ---

782#define TYPE_MIN_VALUE(NODE) (TYPE_CHECK (NODE)->type.minval)
783#define TYPE_MAX_VALUE(NODE) (TYPE_CHECK (NODE)->type.maxval)
784#define TYPE_PRECISION(NODE) (TYPE_CHECK (NODE)->type.precision)
785#define TYPE_SYMTAB_ADDRESS(NODE) (TYPE_CHECK (NODE)->type.symtab.address)
786#define TYPE_SYMTAB_POINTER(NODE) (TYPE_CHECK (NODE)->type.symtab.pointer)
787#define TYPE_NAME(NODE) (TYPE_CHECK (NODE)->type.name)
788#define TYPE_NEXT_VARIANT(NODE) (TYPE_CHECK (NODE)->type.next_variant)
789#define TYPE_MAIN_VARIANT(NODE) (TYPE_CHECK (NODE)->type.main_variant)
790#define TYPE_NONCOPIED_PARTS(NODE) (TYPE_CHECK (NODE)->type.noncopied_parts)
791#define TYPE_CONTEXT(NODE) (TYPE_CHECK (NODE)->type.context)
792#define TYPE_OBSTACK(NODE) (TYPE_CHECK (NODE)->type.obstack)
793#define TYPE_LANG_SPECIFIC(NODE) (TYPE_CHECK (NODE)->type.lang_specific)
794
795/* For aggregate types, information about this type, as a base type
796 for itself. Used in a language-dependent way for types that are
797 neither a RECORD_TYPE, QUAL_UNION_TYPE, nor a UNION_TYPE. */
798#define TYPE_BINFO(NODE) (TYPE_CHECK (NODE)->type.binfo)
799
800/* The (language-specific) typed-based alias set for this type.
801 Objects whose TYPE_ALIAS_SETs are different cannot alias each
802 other. If the TYPE_ALIAS_SET is -1, no alias set has yet been
803 assigned to this type. If the TYPE_ALIAS_SET is 0, objects of this
804 type can alias objects of any type. */
805#define TYPE_ALIAS_SET(NODE) (TYPE_CHECK (NODE)->type.alias_set)
806
807/* Nonzero iff the typed-based alias set for this type has been

--- 17 unchanged lines hidden (view full) ---

825#define TYPE_NO_FORCE_BLK(NODE) (TYPE_CHECK (NODE)->type.no_force_blk_flag)
826
827/* Nonzero in a type considered volatile as a whole. */
828#define TYPE_VOLATILE(NODE) ((NODE)->common.volatile_flag)
829
830/* Means this type is const-qualified. */
831#define TYPE_READONLY(NODE) ((NODE)->common.readonly_flag)
832
833/* If nonzero, this type is `restrict'-qualified, in the C sense of
834 the term. */
835#define TYPE_RESTRICT(NODE) (TYPE_CHECK (NODE)->type.restrict_flag)
836
837/* There is a TYPE_QUAL value for each type qualifier. They can be
838 combined by bitwise-or to form the complete set of qualifiers for a
839 type. */
840
841#define TYPE_UNQUALIFIED 0x0
842#define TYPE_QUAL_CONST 0x1
843#define TYPE_QUAL_VOLATILE 0x2
844#define TYPE_QUAL_RESTRICT 0x4
845
846/* The set of type qualifiers for this type. */
847#define TYPE_QUALS(NODE) \
848 ((TYPE_READONLY(NODE) * TYPE_QUAL_CONST) | \
849 (TYPE_VOLATILE(NODE) * TYPE_QUAL_VOLATILE) | \
850 (TYPE_RESTRICT(NODE) * TYPE_QUAL_RESTRICT))
851
852/* These flags are available for each language front end to use internally. */
853#define TYPE_LANG_FLAG_0(NODE) (TYPE_CHECK (NODE)->type.lang_flag_0)
854#define TYPE_LANG_FLAG_1(NODE) (TYPE_CHECK (NODE)->type.lang_flag_1)
855#define TYPE_LANG_FLAG_2(NODE) (TYPE_CHECK (NODE)->type.lang_flag_2)
856#define TYPE_LANG_FLAG_3(NODE) (TYPE_CHECK (NODE)->type.lang_flag_3)
857#define TYPE_LANG_FLAG_4(NODE) (TYPE_CHECK (NODE)->type.lang_flag_4)
858#define TYPE_LANG_FLAG_5(NODE) (TYPE_CHECK (NODE)->type.lang_flag_5)
859#define TYPE_LANG_FLAG_6(NODE) (TYPE_CHECK (NODE)->type.lang_flag_6)

--- 35 unchanged lines hidden (view full) ---

895 enum machine_mode mode : 8;
896#endif
897
898 unsigned string_flag : 1;
899 unsigned no_force_blk_flag : 1;
900 unsigned needs_constructing_flag : 1;
901 unsigned transparent_union_flag : 1;
902 unsigned packed_flag : 1;
903 unsigned restrict_flag : 1;
904
905 unsigned lang_flag_0 : 1;
906 unsigned lang_flag_1 : 1;
907 unsigned lang_flag_2 : 1;
908 unsigned lang_flag_3 : 1;
909 unsigned lang_flag_4 : 1;
910 unsigned lang_flag_5 : 1;
911 unsigned lang_flag_6 : 1;
912 /* room for 3 more bits */
913
914 unsigned int align;
915 union tree_node *pointer_to;
916 union tree_node *reference_to;
917 union {int address; char *pointer; } symtab;
918 union tree_node *name;
919 union tree_node *minval;
920 union tree_node *maxval;

--- 86 unchanged lines hidden (view full) ---

1007 uses of inheritance using the binfo nodes themselves (instead of
1008 consing new space pointing to binfo nodes).
1009 It is up to the language-dependent front-ends to maintain
1010 this information as necessary. */
1011#define BINFO_INHERITANCE_CHAIN(NODE) TREE_VEC_ELT ((NODE), 0)
1012
1013/* Define fields and accessors for nodes representing declared names. */
1014
1015/* Nonzero if DECL represents a decl. */
1016#define DECL_P(DECL) (TREE_CODE_CLASS (TREE_CODE (DECL)) == 'd')
1017/* This is the name of the object as written by the user.
1018 It is an IDENTIFIER_NODE. */
1019#define DECL_NAME(NODE) (DECL_CHECK (NODE)->decl.name)
1020/* This is the name of the object as the assembler will see it
1021 (but before any translations made by ASM_OUTPUT_LABELREF).
1022 Often this is the same as DECL_NAME.
1023 It is an IDENTIFIER_NODE. */
1024#define DECL_ASSEMBLER_NAME(NODE) (DECL_CHECK (NODE)->decl.assembler_name)

--- 94 unchanged lines hidden (view full) ---

1119
1120/* For any sort of a ..._DECL node, this points to the original (abstract)
1121 decl node which this decl is an instance of, or else it is NULL indicating
1122 that this decl is not an instance of some other decl. For example,
1123 in a nested declaration of an inline function, this points back to the
1124 definition. */
1125#define DECL_ABSTRACT_ORIGIN(NODE) (DECL_CHECK (NODE)->decl.abstract_origin)
1126
1127/* Like DECL_ABSTRACT_ORIGIN, but returns NODE if there's no abstract
1128 origin. This is useful when setting the DECL_ABSTRACT_ORIGIN. */
1129#define DECL_ORIGIN(NODE) \
1130 (DECL_ABSTRACT_ORIGIN (NODE) ? DECL_ABSTRACT_ORIGIN (NODE) : NODE)
1131
1132/* Nonzero for any sort of ..._DECL node means this decl node represents
1133 an inline instance of some original (abstract) decl from an inline function;
1134 suppress any warnings about shadowing some other variable. */
1135#define DECL_FROM_INLINE(NODE) (DECL_ABSTRACT_ORIGIN (NODE) != (tree) 0)
1136
1137/* Nonzero if a _DECL means that the name of this decl should be ignored
1138 for symbolic debug purposes. */
1139#define DECL_IGNORED_P(NODE) (DECL_CHECK (NODE)->decl.ignored_flag)

--- 18 unchanged lines hidden (view full) ---

1158/* Language-specific decl information. */
1159#define DECL_LANG_SPECIFIC(NODE) (DECL_CHECK (NODE)->decl.lang_specific)
1160
1161/* In a VAR_DECL or FUNCTION_DECL,
1162 nonzero means external reference:
1163 do not allocate storage, and refer to a definition elsewhere. */
1164#define DECL_EXTERNAL(NODE) (DECL_CHECK (NODE)->decl.external_flag)
1165
1166/* In a VAR_DECL for a RECORD_TYPE, sets number for non-init_priority
1167 initializatons. */
1168#define DEFAULT_INIT_PRIORITY 65535
1169#define MAX_INIT_PRIORITY 65535
1170#define MAX_RESERVED_INIT_PRIORITY 100
1171
1172/* In a TYPE_DECL
1173 nonzero means the detail info about this type is not dumped into stabs.
1174 Instead it will generate cross reference ('x') of names.
1175 This uses the same flag as DECL_EXTERNAL. */
1176#define TYPE_DECL_SUPPRESS_DEBUG(NODE) (DECL_CHECK (NODE)->decl.external_flag)
1177
1178
1179/* In VAR_DECL and PARM_DECL nodes, nonzero means declared `register'. */

--- 61 unchanged lines hidden (view full) ---

1241
1242/* Used to indicate that this DECL has weak linkage. */
1243#define DECL_WEAK(NODE) (DECL_CHECK (NODE)->decl.weak_flag)
1244
1245/* Used in TREE_PUBLIC decls to indicate that copies of this DECL in
1246 multiple translation units should be merged. */
1247#define DECL_ONE_ONLY(NODE) (DECL_CHECK (NODE)->decl.transparent_union)
1248
1249/* Used in a DECL to indicate that, even if it TREE_PUBLIC, it need
1250 not be put out unless it is needed in this translation unit.
1251 Entities like this are shared across translation units (like weak
1252 entities), but are guaranteed to be generated by any translation
1253 unit that needs them, and therefore need not be put out anywhere
1254 where they are not needed. DECL_COMDAT is just a hint to the
1255 back-end; it is up to front-ends which set this flag to ensure
1256 that there will never be any harm, other than bloat, in putting out
1257 something which is DECL_COMDAT. */
1258#define DECL_COMDAT(NODE) (DECL_CHECK (NODE)->decl.comdat_flag)
1259
1260/* Used in FUNCTION_DECLs to indicate that function entry and exit should
1261 be instrumented with calls to support routines. */
1262#define DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT(NODE) ((NODE)->decl.no_instrument_function_entry_exit)
1263
1264/* Used in FUNCTION_DECLs to indicate that in this function,
1265 check-memory-usage should be disabled. */
1266#define DECL_NO_CHECK_MEMORY_USAGE(NODE) ((NODE)->decl.no_check_memory_usage)
1267
1268/* Additional flags for language-specific uses. */
1269#define DECL_LANG_FLAG_0(NODE) (DECL_CHECK (NODE)->decl.lang_flag_0)
1270#define DECL_LANG_FLAG_1(NODE) (DECL_CHECK (NODE)->decl.lang_flag_1)
1271#define DECL_LANG_FLAG_2(NODE) (DECL_CHECK (NODE)->decl.lang_flag_2)
1272#define DECL_LANG_FLAG_3(NODE) (DECL_CHECK (NODE)->decl.lang_flag_3)
1273#define DECL_LANG_FLAG_4(NODE) (DECL_CHECK (NODE)->decl.lang_flag_4)
1274#define DECL_LANG_FLAG_5(NODE) (DECL_CHECK (NODE)->decl.lang_flag_5)
1275#define DECL_LANG_FLAG_6(NODE) (DECL_CHECK (NODE)->decl.lang_flag_6)
1276#define DECL_LANG_FLAG_7(NODE) (DECL_CHECK (NODE)->decl.lang_flag_7)
1277
1278/* Used to indicate that the pointer to this DECL cannot be treated as
1279 an address constant. */
1280#define DECL_NON_ADDR_CONST_P(NODE) (DECL_CHECK (NODE)->decl.non_addr_const_p)
1281
1282/* Used to indicate an alias set for the memory pointed to by this
1283 particular FIELD_DECL, PARM_DECL, or VAR_DECL, which must have
1284 pointer (or reference) type. */
1285#define DECL_POINTER_ALIAS_SET(NODE) \
1286 (DECL_CHECK (NODE)->decl.pointer_alias_set)
1287
1288/* Nonzero if an alias set has been assigned to this declaration. */
1289#define DECL_POINTER_ALIAS_SET_KNOWN_P(NODE) \
1290 (DECL_POINTER_ALIAS_SET (NODE) != - 1)
1291
1292struct tree_decl
1293{
1294 char common[sizeof (struct tree_common)];
1295 char *filename;
1296 int linenum;
1297 unsigned int uid;
1298 union tree_node *size;
1299#ifdef ONLY_INT_FIELDS

--- 14 unchanged lines hidden (view full) ---

1314 unsigned in_system_header_flag : 1;
1315 unsigned common_flag : 1;
1316 unsigned defer_output : 1;
1317 unsigned transparent_union : 1;
1318 unsigned static_ctor_flag : 1;
1319 unsigned static_dtor_flag : 1;
1320 unsigned artificial_flag : 1;
1321 unsigned weak_flag : 1;
1322
1323 unsigned lang_flag_0 : 1;
1324 unsigned lang_flag_1 : 1;
1325 unsigned lang_flag_2 : 1;
1326 unsigned lang_flag_3 : 1;
1327 unsigned lang_flag_4 : 1;
1328 unsigned lang_flag_5 : 1;
1329 unsigned lang_flag_6 : 1;
1330 unsigned lang_flag_7 : 1;
1331
1332 unsigned non_addr_const_p : 1;
1333 unsigned no_instrument_function_entry_exit : 1;
1334 unsigned no_check_memory_usage : 1;
1335 unsigned comdat_flag : 1;
1336
1337 /* For a FUNCTION_DECL, if inline, this is the size of frame needed.
1338 If built-in, this is the code for which built-in function.
1339 For other kinds of decls, this is DECL_ALIGN. */
1340 union {
1341 int i;
1342 unsigned int u;
1343 enum built_in_function f;

--- 13 unchanged lines hidden (view full) ---

1357 struct rtx_def *live_range_rtl;
1358 /* For FUNCTION_DECLs: points to insn that constitutes its definition
1359 on the permanent obstack. For FIELD_DECL, this is DECL_FIELD_SIZE. */
1360 union {
1361 struct rtx_def *r;
1362 HOST_WIDE_INT i;
1363 } saved_insns;
1364 union tree_node *vindex;
1365 int pointer_alias_set;
1366 /* Points to a structure whose details depend on the language in use. */
1367 struct lang_decl *lang_specific;
1368};
1369
1370/* Define the overall contents of a tree node.
1371 It may be any of the structures declared above
1372 for various types of node. */
1373

--- 8 unchanged lines hidden (view full) ---

1382 struct tree_decl decl;
1383 struct tree_type type;
1384 struct tree_list list;
1385 struct tree_vec vec;
1386 struct tree_exp exp;
1387 struct tree_block block;
1388 };
1389
1390#define NULL_TREE (tree) NULL
1391
1392/* The following functions accept a wide integer argument. Rather than
1393 having to cast on every function call, we use a macro instead, that is
1394 defined here and in rtl.h. */
1395
1396#ifndef exact_log2
1397#define exact_log2(N) exact_log2_wide ((unsigned HOST_WIDE_INT) (N))
1398#define floor_log2(N) floor_log2_wide ((unsigned HOST_WIDE_INT) (N))
1399#endif
1400extern int exact_log2_wide PROTO((unsigned HOST_WIDE_INT));
1401extern int floor_log2_wide PROTO((unsigned HOST_WIDE_INT));
1402
1403extern char *oballoc PROTO((int));
1404extern char *permalloc PROTO((int));
1405extern char *savealloc PROTO((int));
1406extern char *expralloc PROTO((int));
1407
1408/* Lowest level primitive for allocating a node.
1409 The TREE_CODE is the only argument. Contents are initialized
1410 to zero except for a few of the common fields. */

--- 12 unchanged lines hidden (view full) ---

1423
1424/* Make a TREE_VEC. */
1425
1426extern tree make_tree_vec PROTO((int));
1427
1428/* Return the (unique) IDENTIFIER_NODE node for a given name.
1429 The name is supplied as a char *. */
1430
1431extern tree get_identifier PROTO((const char *));
1432
1433/* If an identifier with the name TEXT (a null-terminated string) has
1434 previously been referred to, return that node; otherwise return
1435 NULL_TREE. */
1436
1437extern tree maybe_get_identifier PROTO((const char *));
1438
1439/* Construct various types of nodes. */
1440
1441#define build_int_2(LO,HI) \
1442 build_int_2_wide ((HOST_WIDE_INT) (LO), (HOST_WIDE_INT) (HI))
1443
1444extern tree build PVPROTO((enum tree_code, tree, ...));
1445extern tree build_nt PVPROTO((enum tree_code, ...));
1446extern tree build_parse_node PVPROTO((enum tree_code, ...));
1447
1448extern tree build_int_2_wide PROTO((HOST_WIDE_INT, HOST_WIDE_INT));
1449extern tree build_real PROTO((tree, REAL_VALUE_TYPE));
1450extern tree build_real_from_int_cst PROTO((tree, tree));
1451extern tree build_complex PROTO((tree, tree, tree));
1452extern tree build_string PROTO((int, const char *));
1453extern tree build1 PROTO((enum tree_code, tree, tree));
1454extern tree build_tree_list PROTO((tree, tree));
1455extern tree build_decl_list PROTO((tree, tree));
1456extern tree build_expr_list PROTO((tree, tree));
1457extern tree build_decl PROTO((enum tree_code, tree, tree));
1458extern tree build_block PROTO((tree, tree, tree, tree, tree));
1459extern tree build_expr_wfl PROTO((tree, const char *, int, int));
1460
1461/* Construct various nodes representing data types. */
1462
1463extern tree make_signed_type PROTO((int));
1464extern tree make_unsigned_type PROTO((int));
1465extern void set_sizetype PROTO((tree));
1466extern tree signed_or_unsigned_type PROTO((int, tree));
1467extern void fixup_unsigned_type PROTO((tree));

--- 48 unchanged lines hidden (view full) ---

1516
1517/* Return 1 if an attribute and its arguments are valid for a decl or type. */
1518
1519extern int valid_machine_attribute PROTO((tree, tree, tree, tree));
1520
1521/* Given a tree node and a string, return non-zero if the tree node is
1522 a valid attribute name for the string. */
1523
1524extern int is_attribute_p PROTO((const char *, tree));
1525
1526/* Given an attribute name and a list of attributes, return the list element
1527 of the attribute or NULL_TREE if not found. */
1528
1529extern tree lookup_attribute PROTO((const char *, tree));
1530
1531/* Given two attributes lists, return a list of their union. */
1532
1533extern tree merge_attributes PROTO((tree, tree));
1534
1535/* Given a type node TYPE and a TYPE_QUALIFIER_SET, return a type for
1536 the same kind of data as TYPE describes. Variants point to the
1537 "main variant" (which has no qualifiers set) via TYPE_MAIN_VARIANT,
1538 and it points to a chain of other variants so that duplicate
1539 variants are never made. Only main variants should ever appear as
1540 types of expressions. */
1541
1542extern tree build_qualified_type PROTO((tree, int));
1543
1544/* Like build_qualified_type, but only deals with the `const' and
1545 `volatile' qualifiers. This interface is retained for backwards
1546 compatiblity with the various front-ends; new code should use
1547 build_qualified_type instead. */
1548
1549#define build_type_variant(TYPE, CONST_P, VOLATILE_P) \
1550 build_qualified_type (TYPE, \
1551 ((CONST_P) ? TYPE_QUAL_CONST : 0) \
1552 | ((VOLATILE_P) ? TYPE_QUAL_VOLATILE : 0))
1553
1554/* Make a copy of a type node. */
1555
1556extern tree build_type_copy PROTO((tree));
1557
1558/* Given a ..._TYPE node, calculate the TYPE_SIZE, TYPE_SIZE_UNIT,
1559 TYPE_ALIGN and TYPE_MODE fields.
1560 If called more than once on one node, does nothing except
1561 for the first time. */

--- 117 unchanged lines hidden (view full) ---

1679/* staticp (tree x) is nonzero if X is a reference to data allocated
1680 at a fixed address in memory. */
1681
1682extern int staticp PROTO((tree));
1683
1684/* Gets an error if argument X is not an lvalue.
1685 Also returns 1 if X is an lvalue, 0 if not. */
1686
1687extern int lvalue_or_else PROTO((tree, const char *));
1688
1689/* save_expr (EXP) returns an expression equivalent to EXP
1690 but it can be used multiple times within context CTX
1691 and only evaluate EXP once. */
1692
1693extern tree save_expr PROTO((tree));
1694
1695/* Returns the index of the first non-tree operand for CODE, or the number

--- 116 unchanged lines hidden (view full) ---

1812 this _DECL with its context, or zero if none. */
1813extern tree decl_type_context PROTO((tree));
1814
1815/* Given the FUNCTION_DECL for the current function,
1816 return zero if it is ok for this function to be inline.
1817 Otherwise return a warning message with a single %s
1818 for the function's name. */
1819
1820extern const char *function_cannot_inline_p PROTO((tree));
1821
1822/* Return 1 if EXPR is the real constant zero. */
1823extern int real_zerop PROTO((tree));
1824
1825/* Declare commonly used variables for tree structure. */
1826
1827/* An integer constant with value 0 */
1828extern tree integer_zero_node;

--- 75 unchanged lines hidden (view full) ---

1904/* Pointer to function to finish handling an incomplete decl at the
1905 end of compilation. */
1906
1907extern void (*incomplete_decl_finalize_hook) PROTO((tree));
1908
1909/* In tree.c */
1910extern char *perm_calloc PROTO((int, long));
1911extern tree get_file_function_name PROTO((int));
1912extern tree get_file_function_name_long PROTO((const char *));
1913extern tree get_set_constructor_bits PROTO((tree, char *, int));
1914extern tree get_set_constructor_bytes PROTO((tree,
1915 unsigned char *, int));
1916extern int get_alias_set PROTO((tree));
1917extern int new_alias_set PROTO((void));
1918extern int (*lang_get_alias_set) PROTO((tree));
1919
1920/* In stmt.c */
1921
1922extern void expand_fixups PROTO((struct rtx_def *));
1923extern tree expand_start_stmt_expr PROTO((void));
1924extern tree expand_end_stmt_expr PROTO((tree));
1925extern void expand_expr_stmt PROTO((tree));

--- 14 unchanged lines hidden (view full) ---

1940extern int expand_continue_loop PROTO((struct nesting *));
1941extern int expand_exit_loop PROTO((struct nesting *));
1942extern int expand_exit_loop_if_false PROTO((struct nesting *,
1943 tree));
1944extern int expand_exit_something PROTO((void));
1945
1946extern void expand_null_return PROTO((void));
1947extern void expand_return PROTO((tree));
1948extern int optimize_tail_recursion PROTO((tree, struct rtx_def *));
1949extern void expand_start_bindings PROTO((int));
1950extern void expand_end_bindings PROTO((tree, int, int));
1951extern void start_cleanup_deferral PROTO((void));
1952extern void end_cleanup_deferral PROTO((void));
1953extern void mark_block_as_eh_region PROTO((void));
1954extern void mark_block_as_not_eh_region PROTO((void));
1955extern int is_eh_region PROTO((void));
1956extern int conditional_context PROTO((void));
1957extern tree last_cleanup_this_contour PROTO((void));
1958extern int expand_dhc_cleanup PROTO((tree));
1959extern int expand_dcc_cleanup PROTO((tree));
1960extern void expand_start_case PROTO((int, tree, tree,
1961 const char *));
1962extern void expand_end_case PROTO((tree));
1963extern int pushcase PROTO((tree,
1964 tree (*) (tree, tree),
1965 tree, tree *));
1966extern int pushcase_range PROTO((tree, tree,
1967 tree (*) (tree, tree),
1968 tree, tree *));
1969extern void using_eh_for_cleanups PROTO((void));
1970extern int stmt_loop_nest_empty PROTO((void));
1971
1972/* In fold-const.c */
1973
1974/* Fold constants as much as possible in an expression.
1975 Returns the simplified expression.
1976 Acts only on the top level of the expression;
1977 if the argument itself cannot be simplified, its
1978 subexpressions are not changed. */

--- 181 unchanged lines hidden (view full) ---

2160extern void type_hash_add PROTO ((int, tree));
2161extern int type_hash_list PROTO ((tree));
2162extern int simple_cst_list_equal PROTO ((tree, tree));
2163extern void debug_obstack PROTO ((char *));
2164extern void rtl_in_current_obstack PROTO ((void));
2165extern void rtl_in_saveable_obstack PROTO ((void));
2166extern void init_tree_codes PROTO ((void));
2167extern void dump_tree_statistics PROTO ((void));
2168extern void print_obstack_statistics PROTO ((const char *,
2169 struct obstack *));
2170#ifdef BUFSIZ
2171extern void print_obstack_name PROTO ((char *, FILE *, const char *));
2172#endif
2173extern void expand_function_end PROTO ((char *, int, int));
2174extern void expand_function_start PROTO ((tree, int));
2175extern int real_onep PROTO ((tree));
2176extern int real_twop PROTO ((tree));
2177extern void start_identifier_warnings PROTO ((void));
2178extern void gcc_obstack_init PROTO ((struct obstack *));
2179extern void init_obstacks PROTO ((void));
2180extern void obfree PROTO ((char *));
2181extern tree tree_check PROTO ((tree, enum tree_code,
2182 const char *, int, int));
2183extern tree tree_class_check PROTO ((tree, char, const char *,
2184 int, int));
2185extern tree expr_check PROTO ((tree, int, const char *,
2186 int, int));
2187
2188/* In function.c */
2189extern void setjmp_protect_args PROTO ((void));
2190extern void setjmp_protect PROTO ((tree));
2191extern void expand_main_function PROTO ((void));
2192extern void mark_varargs PROTO ((void));
2193extern void init_function_start PROTO ((tree, char *, int));
2194extern void assign_parms PROTO ((tree, int));

--- 21 unchanged lines hidden (view full) ---

2216/* In print-rtl.c */
2217#ifdef BUFSIZ
2218extern void print_rtl PROTO ((FILE *, struct rtx_def *));
2219#endif
2220
2221/* In print-tree.c */
2222extern void debug_tree PROTO ((tree));
2223#ifdef BUFSIZ
2224extern void print_node PROTO ((FILE *, const char *, tree, int));
2225extern void print_node_brief PROTO ((FILE *, const char *, tree, int));
2226extern void indent_to PROTO ((FILE *, int));
2227#endif
2228
2229/* In expr.c */
2230extern void emit_queue PROTO ((void));
2231extern int apply_args_register_offset PROTO ((int));
2232extern struct rtx_def *expand_builtin_return_addr
2233 PROTO ((enum built_in_function, int, struct rtx_def *));

--- 39 unchanged lines hidden (view full) ---

2273
2274/* In c-lex.c */
2275extern void set_yydebug PROTO ((int));
2276
2277/* In stor-layout.c */
2278extern void fixup_signed_type PROTO ((tree));
2279
2280/* varasm.c */
2281extern void make_decl_rtl PROTO ((tree, const char *, int));
2282extern void make_decl_one_only PROTO ((tree));
2283extern int supports_one_only PROTO ((void));
2284extern void variable_section PROTO ((tree, int));
2285
2286/* In fold-const.c */
2287extern int div_and_round_double PROTO ((enum tree_code, int,
2288 HOST_WIDE_INT, HOST_WIDE_INT,
2289 HOST_WIDE_INT, HOST_WIDE_INT,

--- 83 unchanged lines hidden ---