📄 tree.h
字号:
extern tree sizetype;/* If nonzero, an upper limit on alignment of structure fields, in bits. */extern int maximum_field_alignment;/* If non-zero, the alignment of a bitstring or (power-)set value, in bits. */extern int set_alignment;/* 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));extern tree expr_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));/* unsave_expr (EXP) returns an expression equivalent to EXP but it can be used multiple times and will evaluate EXP, in it's entirety each time. */extern tree unsave_expr PROTO((tree));/* unsave_expr_now (EXP) resets EXP in place, so that it can be expanded again. */extern tree unsave_expr_now PROTO((tree));/* Return 1 if EXP contains a PLACEHOLDER_EXPR; i.e., if it represents a size or offset that depends on a field within a record. Note that we only allow such expressions within simple arithmetic or a COND_EXPR. */extern int contains_placeholder_p PROTO((tree));/* Given a tree EXP, a FIELD_DECL F, and a replacement value R, return a tree with all occurrences of references to F in a PLACEHOLDER_EXPR replaced by R. Note that we assume here that EXP contains only arithmetic expressions. */extern tree substitute_in_expr PROTO((tree, tree, 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));/* Subroutine of stabilize_reference; this is called for subtrees of references. Any expression with side-effects must be put in a SAVE_EXPR to ensure that it is only evaluated once. */extern tree stabilize_reference_1 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 *, 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, UNION_TYPE, or QUAL_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));/* Return 1 if EXPR is the real constant zero. */extern int real_zerop 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 lvalues are limited to those valid in pedantic ANSI C. Zero means allow extended lvalues. */extern int pedantic_lvalues;/* 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. DECL is the declaration in question. VERBOSITY determines what information will be printed: 0: DECL_NAME, demangled as necessary. 1: and scope information. 2: and any other information that might be interesting, such as function parameter types in C++. */extern char *(*decl_printable_name) (/* tree decl, int verbosity */);/* Pointer to function to finish handling an incomplete decl at the end of compilation. */extern void (*incomplete_decl_finalize_hook) ();/* In tree.c */extern char *perm_calloc PROTO((int, long));extern tree get_file_function_name PROTO((int));extern tree get_set_constructor_bits PROTO((tree, char *, int));extern tree get_set_constructor_bytes PROTO((tree, unsigned char *, int));/* In stmt.c */extern void expand_fixups PROTO((struct rtx_def *));extern tree expand_start_stmt_expr PROTO((void));extern tree expand_end_stmt_expr PROTO((tree));extern void expand_expr_stmt PROTO((tree));extern int warn_if_unused_value PROTO((tree));extern void expand_decl_init 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 void start_cleanup_deferral PROTO((void));extern void end_cleanup_deferral PROTO((void));extern void mark_block_as_eh_region PROTO((void));extern void mark_block_as_not_eh_region PROTO((void));extern int is_eh_region PROTO((void));extern int conditional_context PROTO((void));extern tree last_cleanup_this_contour PROTO((void));extern int expand_dhc_cleanup PROTO((tree));extern int expand_dcc_cleanup PROTO((tree));extern void expand_start_case PROTO((int, tree, tree, char *));extern void expand_end_case PROTO((tree));extern int pushcase PROTO((tree, tree (*) (tree, tree), tree, tree *));extern int pushcase_range PROTO((tree, tree, tree (*) (tree, tree), tree, tree *));/* In fold-const.c *//* 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));extern int force_fit_type PROTO((tree, int));extern int add_double PROTO((HOST_WIDE_INT, HOST_WIDE_INT, HOST_WIDE_INT, HOST_WIDE_INT, HOST_WIDE_INT *, HOST_WIDE_INT *));extern int neg_double PROTO((HOST_WIDE_INT, HOST_WIDE_INT, HOST_WIDE_INT *, HOST_WIDE_INT *));extern int mul_double PROTO((HOST_WIDE_INT, HOST_WIDE_INT, HOST_WIDE_INT, HOST_WIDE_INT, HOST_WIDE_INT *, HOST_WIDE_INT *));extern void lshift_double PROTO((HOST_WIDE_INT, HOST_WIDE_INT, HOS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -