📄 tree.h
字号:
put the prototype here. Rtl.h does declare the prototype if tree.h had been included. */extern tree make_tree ();/* Given a type node TYPE, and CONSTP and VOLATILEP, return a type for the same kind of data as TYPE describes. Variants point to the "main variant" (which has neither CONST nor VOLATILE) via TYPE_MAIN_VARIANT, and it points to a chain of other variants so that duplicate variants are never made. Only main variants should ever appear as types of expressions. */extern tree build_type_variant PROTO((tree, int, int));/* Make a copy of a type node. */extern tree build_type_copy PROTO((tree));/* Given a ..._TYPE node, calculate the TYPE_SIZE, TYPE_SIZE_UNIT, TYPE_ALIGN and TYPE_MODE fields. If called more than once on one node, does nothing except for the first time. */extern void layout_type PROTO((tree));/* Given a hashcode and a ..._TYPE node (for which the hashcode was made), return a canonicalized ..._TYPE node, so that duplicates are not made. How the hash code is computed is up to the caller, as long as any two callers that could hash identical-looking type nodes agree. */extern tree type_hash_canon PROTO((int, tree));/* Given a VAR_DECL, PARM_DECL, RESULT_DECL or FIELD_DECL node, calculates the DECL_SIZE, DECL_SIZE_UNIT, DECL_ALIGN and DECL_MODE fields. Call this only once for any given decl node. Second argument is the boundary that this field can be assumed to be starting at (in bits). Zero means it can be assumed aligned on any boundary that may be needed. */extern void layout_decl PROTO((tree, unsigned));/* Fold constants as much as possible in an expression. Returns the simplified expression. Acts only on the top level of the expression; if the argument itself cannot be simplified, its subexpressions are not changed. */extern tree fold PROTO((tree));/* Return an expr equal to X but certainly not valid as an lvalue. */extern tree non_lvalue PROTO((tree));extern tree convert PROTO((tree, tree));extern tree size_in_bytes PROTO((tree));extern int int_size_in_bytes PROTO((tree));extern tree size_binop PROTO((enum tree_code, tree, tree));extern tree size_int PROTO((unsigned));extern tree round_up PROTO((tree, int));extern tree get_pending_sizes PROTO((void));/* Type for sizes of data-type. */extern tree sizetype;/* Concatenate two lists (chains of TREE_LIST nodes) X and Y by making the last node in X point to Y. Returns X, except if X is 0 returns Y. */extern tree chainon PROTO((tree, tree));/* Make a new TREE_LIST node from specified PURPOSE, VALUE and CHAIN. */extern tree tree_cons PROTO((tree, tree, tree));extern tree perm_tree_cons PROTO((tree, tree, tree));extern tree temp_tree_cons PROTO((tree, tree, tree));extern tree saveable_tree_cons PROTO((tree, tree, tree));extern tree decl_tree_cons PROTO((tree, tree, tree));/* Return the last tree node in a chain. */extern tree tree_last PROTO((tree));/* Reverse the order of elements in a chain, and return the new head. */extern tree nreverse PROTO((tree));/* Returns the length of a chain of nodes (number of chain pointers to follow before reaching a null pointer). */extern int list_length PROTO((tree));/* integer_zerop (tree x) is nonzero if X is an integer constant of value 0 */extern int integer_zerop PROTO((tree));/* integer_onep (tree x) is nonzero if X is an integer constant of value 1 */extern int integer_onep PROTO((tree));/* integer_all_onesp (tree x) is nonzero if X is an integer constant all of whose significant bits are 1. */extern int integer_all_onesp PROTO((tree));/* integer_pow2p (tree x) is nonzero is X is an integer constant with exactly one bit 1. */extern int integer_pow2p PROTO((tree));/* staticp (tree x) is nonzero if X is a reference to data allocated at a fixed address in memory. */extern int staticp PROTO((tree));/* Gets an error if argument X is not an lvalue. Also returns 1 if X is an lvalue, 0 if not. */extern int lvalue_or_else PROTO((tree, char *));/* save_expr (EXP) returns an expression equivalent to EXP but it can be used multiple times within context CTX and only evaluate EXP once. */extern tree save_expr PROTO((tree));/* variable_size (EXP) is like save_expr (EXP) except that it is for the special case of something that is part of a variable size for a data type. It makes special arrangements to compute the value at the right time when the data type belongs to a function parameter. */extern tree variable_size PROTO((tree));/* stabilize_reference (EXP) returns an reference equivalent to EXP but it can be used multiple times and only evaluate the subexpressions once. */extern tree stabilize_reference PROTO((tree));/* Return EXP, stripped of any conversions to wider types in such a way that the result of converting to type FOR_TYPE is the same as if EXP were converted to FOR_TYPE. If FOR_TYPE is 0, it signifies EXP's type. */extern tree get_unwidened PROTO((tree, tree));/* Return OP or a simpler expression for a narrower value which can be sign-extended or zero-extended to give back OP. Store in *UNSIGNEDP_PTR either 1 if the value should be zero-extended or 0 if the value should be sign-extended. */extern tree get_narrower PROTO((tree, int *));/* Given MODE and UNSIGNEDP, return a suitable type-tree with that mode. The definition of this resides in language-specific code as the repertoire of available types may vary. */extern tree type_for_mode PROTO((enum machine_mode, int));/* Given PRECISION and UNSIGNEDP, return a suitable type-tree for an integer type with at least that precision. The definition of this resides in language-specific code as the repertoire of available types may vary. */extern tree type_for_size PROTO((unsigned, int));/* Given an integer type T, return a type like T but unsigned. If T is unsigned, the value is T. The definition of this resides in language-specific code as the repertoire of available types may vary. */extern tree unsigned_type PROTO((tree));/* Given an integer type T, return a type like T but signed. If T is signed, the value is T. The definition of this resides in language-specific code as the repertoire of available types may vary. */extern tree signed_type PROTO((tree));/* This function must be defined in the language-specific files. expand_expr calls it to build the cleanup-expression for a TARGET_EXPR. This is defined in a language-specific file. */extern tree maybe_build_cleanup PROTO((tree));/* Given an expression EXP that may be a COMPONENT_REF or an ARRAY_REF, look for nested component-refs or array-refs at constant positions and find the ultimate containing object, which is returned. */extern tree get_inner_reference PROTO((tree, int *, int *, tree *, enum machine_mode *, int *, int *));/* Return the FUNCTION_DECL which provides this _DECL with its context, or zero if none. */extern tree decl_function_context PROTO((tree));/* Return the RECORD_TYPE or UNION_TYPE which provides this _DECL with its context, or zero if none. */extern tree decl_type_context PROTO((tree));/* Given the FUNCTION_DECL for the current function, return zero if it is ok for this function to be inline. Otherwise return a warning message with a single %s for the function's name. */extern char *function_cannot_inline_p PROTO((tree));/* Declare commonly used variables for tree structure. *//* An integer constant with value 0 */extern tree integer_zero_node;/* An integer constant with value 1 */extern tree integer_one_node;/* An integer constant with value 0 whose type is sizetype. */extern tree size_zero_node;/* An integer constant with value 1 whose type is sizetype. */extern tree size_one_node;/* A constant of type pointer-to-int and value 0 */extern tree null_pointer_node;/* A node of type ERROR_MARK. */extern tree error_mark_node;/* The type node for the void type. */extern tree void_type_node;/* The type node for the ordinary (signed) integer type. */extern tree integer_type_node;/* The type node for the unsigned integer type. */extern tree unsigned_type_node;/* The type node for the ordinary character type. */extern tree char_type_node;/* Points to the name of the input file from which the current input being parsed originally came (before it went into cpp). */extern char *input_filename;/* Current line number in input file. */extern int lineno;/* Nonzero for -pedantic switch: warn about anything that standard C forbids. */extern int pedantic;/* Nonzero means can safely call expand_expr now; otherwise layout_type puts variable sizes onto `pending_sizes' instead. */extern int immediate_size_expand;/* Points to the FUNCTION_DECL of the function whose body we are reading. */extern tree current_function_decl;/* Nonzero if function being compiled can call setjmp. */extern int current_function_calls_setjmp;/* Nonzero if function being compiled can call longjmp. */extern int current_function_calls_longjmp;/* Nonzero means all ..._TYPE nodes should be allocated permanently. */extern int all_types_permanent;/* Pointer to function to compute the name to use to print a declaration. */extern char *(*decl_printable_name) ();/* In tree.c */extern char *perm_calloc PROTO((int, long));/* In stmt.c */extern tree expand_start_stmt_expr PROTO((void));extern tree expand_end_stmt_expr PROTO((tree));extern void expand_expr_stmt PROTO((tree));extern void clear_last_expr PROTO((void));extern void expand_label PROTO((tree));extern void expand_goto PROTO((tree));extern void expand_asm PROTO((tree));extern void expand_start_cond PROTO((tree, int));extern void expand_end_cond PROTO((void));extern void expand_start_else PROTO((void));extern void expand_start_elseif PROTO((tree));extern struct nesting *expand_start_loop PROTO((int));extern struct nesting *expand_start_loop_continue_elsewhere PROTO((int));extern void expand_loop_continue_here PROTO((void));extern void expand_end_loop PROTO((void));extern int expand_continue_loop PROTO((struct nesting *));extern int expand_exit_loop PROTO((struct nesting *));extern int expand_exit_loop_if_false PROTO((struct nesting *, tree));extern int expand_exit_something PROTO((void));extern void expand_null_return PROTO((void));extern void expand_return PROTO((tree));extern void expand_start_bindings PROTO((int));extern void expand_end_bindings PROTO((tree, int, int));extern tree last_cleanup_this_contour PROTO((void));extern void expand_start_case PROTO((int, tree, tree, char *));extern void expand_end_case PROTO((tree));extern int pushcase PROTO((tree, tree, tree *));extern int pushcase_range PROTO((tree, tree, tree, tree *));/* In fold-const.c */extern tree invert_truthvalue PROTO((tree));/* The language front-end must define these functions. *//* Function of no arguments for initializing lexical scanning. */extern void init_lex PROTO((void));/* Function of no arguments for initializing the symbol table. */extern void init_decl_processing PROTO((void));/* Functions called with no arguments at the beginning and end or processing the input source file. */extern void lang_init PROTO((void));extern void lang_finish PROTO((void));/* Function called with no arguments to parse and compile the input. */extern int yyparse PROTO((void));/* Function called with option as argument to decode options starting with -f or -W or +. It should return nonzero if it handles the option. */extern int lang_decode_option PROTO((char *));/* Functions for processing symbol declarations. *//* Function to enter a new lexical scope. Takes one argument: always zero when called from outside the front end. */extern void pushlevel PROTO((int));/* Function to exit a lexical scope. It returns a BINDING for that scope. Takes three arguments: KEEP -- nonzero if there were declarations in this scope. REVERSE -- reverse the order of decls before returning them. FUNCTIONBODY -- nonzero if this level is the body of a function. */extern tree poplevel PROTO((int, int, int));/* Set the BLOCK node for the current scope level. */extern void set_block PROTO((tree));/* Function to add a decl to the current scope level. Takes one argument, a decl to add. Returns that decl, or, if the same symbol is already declared, may return a different decl for that name. */extern tree pushdecl PROTO((tree));/* Function to return the chain of decls so far in the current scope level. */extern tree getdecls PROTO((void));/* Function to return the chain of structure tags in the current scope level. */extern tree gettags PROTO((void));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -