X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftree.h;h=e2f54a3f08f90d044072095e0de748c93b4cffff;hb=d353b54cdcc7ce801062a2a2a9a53b67419db745;hp=0a16c0df004483736d271740aa943e82e81a8688;hpb=aa44f5c3b67c3d5d4d7d74f96490202a4843f318;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/tree.h b/gcc/tree.h index 0a16c0df004..e2f54a3f08f 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -27,6 +27,7 @@ along with GCC; see the file COPYING3. If not see #include "input.h" #include "statistics.h" #include "vec.h" +#include "vecir.h" #include "double-int.h" #include "alias.h" #include "options.h" @@ -178,11 +179,6 @@ extern const unsigned char tree_code_length[]; extern const char *const tree_code_name[]; -/* A vectors of trees. */ -DEF_VEC_P(tree); -DEF_VEC_ALLOC_P(tree,gc); -DEF_VEC_ALLOC_P(tree,heap); - /* We have to be able to tell cgraph about the needed-ness of the target of an alias. This requires that the decl have been defined. Aliases that precede their definition have to be queued for later processing. */ @@ -411,7 +407,7 @@ struct GTY(()) tree_common { addressable_flag: TREE_ADDRESSABLE in - VAR_DECL, FUNCTION_DECL, FIELD_DECL, LABEL_DECL + VAR_DECL, PARM_DECL, RESULT_DECL, FUNCTION_DECL, LABEL_DECL all types CONSTRUCTOR, IDENTIFIER_NODE STMT_EXPR, it means we want the result of the enclosed expression @@ -1106,13 +1102,10 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int, /* Define many boolean fields that all tree nodes have. */ -/* In VAR_DECL nodes, nonzero means address of this is needed. - So it cannot be in a register. +/* In VAR_DECL, PARM_DECL and RESULT_DECL nodes, nonzero means address + of this is needed. So it cannot be in a register. In a FUNCTION_DECL, nonzero means its address is needed. So it must be compiled even if it is an inline function. - In a FIELD_DECL node, it means that the programmer is permitted to - construct the address of this field. This is used for aliasing - purposes: see record_component_aliases. In CONSTRUCTOR nodes, it means object constructed must be in memory. In LABEL_DECL nodes, it means a goto for this label has been seen from a place outside all binding contours that restore stack levels. @@ -1702,7 +1695,6 @@ extern void protected_set_expr_location (tree, location_t); */ #define CALL_EXPR_FN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 1) #define CALL_EXPR_STATIC_CHAIN(NODE) TREE_OPERAND (CALL_EXPR_CHECK (NODE), 2) -#define CALL_EXPR_ARGS(NODE) call_expr_arglist (NODE) #define CALL_EXPR_ARG(NODE, I) TREE_OPERAND (CALL_EXPR_CHECK (NODE), (I) + 3) #define call_expr_nargs(NODE) (VL_EXP_OPERAND_LENGTH(NODE) - 3) @@ -4009,9 +4001,16 @@ tree_to_double_int (const_tree cst) extern tree double_int_to_tree (tree, double_int); extern bool double_int_fits_to_tree_p (const_tree, double_int); +/* Create an INT_CST node with a CST value zero extended. */ + +static inline tree +build_int_cstu (tree type, unsigned HOST_WIDE_INT cst) +{ + return double_int_to_tree (type, uhwi_to_double_int (cst)); +} + extern tree build_int_cst (tree, HOST_WIDE_INT); extern tree build_int_cst_type (tree, HOST_WIDE_INT); -extern tree build_int_cstu (tree, unsigned HOST_WIDE_INT); extern tree build_int_cst_wide (tree, unsigned HOST_WIDE_INT, HOST_WIDE_INT); extern tree build_int_cst_wide_type (tree, unsigned HOST_WIDE_INT, HOST_WIDE_INT); @@ -4424,9 +4423,9 @@ extern tree size_diffop_loc (location_t, tree, tree); extern tree round_up_loc (location_t, tree, int); #define round_down(T,N) round_down_loc (UNKNOWN_LOCATION, T, N) extern tree round_down_loc (location_t, tree, int); -extern tree get_pending_sizes (void); +extern VEC(tree,gc) *get_pending_sizes (void); extern void put_pending_size (tree); -extern void put_pending_sizes (tree); +extern void put_pending_sizes (VEC(tree,gc) *); extern void finalize_size_functions (void); /* Type for sizes of data-type. */ @@ -4478,10 +4477,6 @@ extern tree first_field (const_tree); extern bool initializer_zerop (const_tree); -/* Given a CONSTRUCTOR CTOR, return the elements as a TREE_LIST. */ - -extern tree ctor_to_list (tree); - /* Given a CONSTRUCTOR CTOR, return the element values as a vector. */ extern VEC(tree,gc) *ctor_to_vec (tree); @@ -4817,7 +4812,6 @@ extern tree lower_bound_in_type (tree, tree); extern int operand_equal_for_phi_arg_p (const_tree, const_tree); extern tree call_expr_arg (tree, int); extern tree *call_expr_argp (tree, int); -extern tree call_expr_arglist (tree); extern tree create_artificial_label (location_t); extern const char *get_name (tree); extern bool stdarg_p (tree); @@ -5086,6 +5080,8 @@ extern location_t tree_nonartificial_location (tree); extern tree block_ultimate_origin (const_tree); +extern tree get_binfo_at_offset (tree, HOST_WIDE_INT, tree); + /* In tree-nested.c */ extern tree build_addr (tree, tree); @@ -5168,6 +5164,30 @@ extern tree build_duplicate_type (tree); extern int flags_from_decl_or_type (const_tree); extern int call_expr_flags (const_tree); +/* Call argument flags. */ + +/* Nonzero if the argument is not dereferenced recursively, thus only + directly reachable memory is read or written. */ +#define EAF_DIRECT (1 << 0) +/* Nonzero if memory reached by the argument is not clobbered. */ +#define EAF_NOCLOBBER (1 << 1) +/* Nonzero if the argument does not escape. */ +#define EAF_NOESCAPE (1 << 2) +/* Nonzero if the argument is not used by the function. */ +#define EAF_UNUSED (1 << 3) + +/* Call return flags. */ + +/* Mask for the argument number that is returned. Lower two bits of + the return flags, encodes argument slots zero to three. */ +#define ERF_RETURN_ARG_MASK (3) +/* Nonzero if the return value is equal to the argument number + flags & ERF_RETURN_ARG_MASK. */ +#define ERF_RETURNS_ARG (1 << 2) +/* Nonzero if the return value does not alias with anything. Functions + with the malloc attribute have this set on their return value. */ +#define ERF_NOALIAS (1 << 3) + extern int setjmp_call_p (const_tree); extern bool gimple_alloca_call_p (const_gimple); extern bool alloca_call_p (const_tree); @@ -5402,9 +5422,6 @@ extern tree build_personality_function (const char *); void init_inline_once (void); -/* In ipa-reference.c. Used for parsing attributes of asm code. */ -extern GTY(()) tree memory_identifier_string; - /* Compute the number of operands in an expression node NODE. For tcc_vl_exp nodes like CALL_EXPRs, this is stored in the node itself, otherwise it is looked up from the node's code. */