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 --- |