X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftree.h;h=6bc8a34c94c1c95c3d3d91b5b885a3de9536fa10;hb=44fcef54e407a058a5a1ed8f9e372deb3bff9d10;hp=0141d2b4456b232de8755bb3d60f8725addf19d1;hpb=616507035de4fef96f26b4dba4c47b8329ef8ccc;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/tree.h b/gcc/tree.h index 0141d2b4456..6bc8a34c94c 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -158,8 +158,10 @@ extern const unsigned char tree_code_length[]; extern const char *const tree_code_name[]; -/* A garbage collected vector of trees. */ -DEF_VEC_GC_P(tree); +/* A vectors of trees. */ +DEF_VEC_P(tree); +DEF_VEC_ALLOC_P(tree,gc); +DEF_VEC_ALLOC_P(tree,heap); /* Classify which part of the compiler has defined a given builtin function. @@ -441,7 +443,7 @@ struct tree_common GTY(()) #define TREE_SET_CODE(NODE, VALUE) ((NODE)->common.code = (VALUE)) /* When checking is enabled, errors will be generated if a tree node - is accessed incorrectly. The macros abort with a fatal error. */ + is accessed incorrectly. The macros die with a fatal error. */ #if defined ENABLE_TREE_CHECKING && (GCC_VERSION >= 2007) #define TREE_CHECK(T, CODE) __extension__ \ @@ -905,6 +907,9 @@ extern void tree_operand_check_failed (int, enum tree_code, its address should be of type `volatile WHATEVER *'. In other words, the declared item is volatile qualified. This is used in _DECL nodes and _REF nodes. + On a FUNCTION_DECL node, this means the function does not + return normally. This is the same effect as setting + the attribute noreturn on the function in C. In a ..._TYPE node, means this type is volatile-qualified. But use TYPE_VOLATILE instead of this macro when the node is a type, @@ -1283,6 +1288,10 @@ struct tree_vec GTY(()) #define OBJ_TYPE_REF_OBJECT(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 1) #define OBJ_TYPE_REF_TOKEN(NODE) TREE_OPERAND (OBJ_TYPE_REF_CHECK (NODE), 2) +/* ASSERT_EXPR accessors. */ +#define ASSERT_EXPR_VAR(NODE) TREE_OPERAND (ASSERT_EXPR_CHECK (NODE), 0) +#define ASSERT_EXPR_COND(NODE) TREE_OPERAND (ASSERT_EXPR_CHECK (NODE), 1) + struct tree_exp GTY(()) { struct tree_common common; @@ -1329,12 +1338,17 @@ struct tree_exp GTY(()) #define SSA_NAME_VALUE(N) \ SSA_NAME_CHECK (N)->ssa_name.value_handle +/* Range information for SSA_NAMEs. */ +#define SSA_NAME_VALUE_RANGE(N) \ + SSA_NAME_CHECK (N)->ssa_name.value_range + /* Auxiliary pass-specific data. */ #define SSA_NAME_AUX(N) \ SSA_NAME_CHECK (N)->ssa_name.aux #ifndef _TREE_FLOW_H struct ptr_info_def; +struct value_range_def; #endif @@ -1372,6 +1386,9 @@ struct tree_ssa_name GTY(()) as well. */ tree value_handle; + /* Value range information. */ + struct value_range_def *value_range; + /* Auxiliary information stored with the ssa name. */ PTR GTY((skip)) aux; @@ -1395,9 +1412,6 @@ struct tree_ssa_name GTY(()) the link to the next PHI is in PHI_CHAIN. */ #define PHI_CHAIN(NODE) TREE_CHAIN (PHI_NODE_CHECK (NODE)) -/* Nonzero if the PHI node was rewritten by a previous pass through the - SSA renamer. */ -#define PHI_REWRITTEN(NODE) PHI_NODE_CHECK (NODE)->phi.rewritten #define PHI_NUM_ARGS(NODE) PHI_NODE_CHECK (NODE)->phi.num_args #define PHI_ARG_CAPACITY(NODE) PHI_NODE_CHECK (NODE)->phi.capacity #define PHI_ARG_ELT(NODE, I) PHI_NODE_ELT_CHECK (NODE, I) @@ -1422,10 +1436,6 @@ struct tree_phi_node GTY(()) int num_args; int capacity; - /* Nonzero if the PHI node was rewritten by a previous pass through the - SSA renamer. */ - int rewritten; - /* Basic block to that the phi node belongs. */ struct basic_block_def *bb; @@ -1848,13 +1858,13 @@ struct tree_binfo GTY (()) tree vtable; tree virtuals; tree vptr_field; - VEC(tree) *base_accesses; + VEC(tree,gc) *base_accesses; tree inheritance; tree vtt_subvtt; tree vtt_vptr; - VEC(tree) base_binfos; + VEC(tree,none) base_binfos; }; @@ -2607,6 +2617,8 @@ enum tree_index TI_PID_TYPE, TI_PTRDIFF_TYPE, TI_VA_LIST_TYPE, + TI_VA_LIST_GPR_COUNTER_FIELD, + TI_VA_LIST_FPR_COUNTER_FIELD, TI_BOOLEAN_TYPE, TI_FILEPTR_TYPE, @@ -2673,6 +2685,8 @@ extern GTY(()) tree global_trees[TI_MAX]; #define pid_type_node global_trees[TI_PID_TYPE] #define ptrdiff_type_node global_trees[TI_PTRDIFF_TYPE] #define va_list_type_node global_trees[TI_VA_LIST_TYPE] +#define va_list_gpr_counter_field global_trees[TI_VA_LIST_GPR_COUNTER_FIELD] +#define va_list_fpr_counter_field global_trees[TI_VA_LIST_FPR_COUNTER_FIELD] /* The C type `FILE *'. */ #define fileptr_type_node global_trees[TI_FILEPTR_TYPE] @@ -2822,13 +2836,6 @@ extern void replace_ssa_name_symbol (tree, tree); extern void ssanames_print_statistics (void); #endif -extern void mark_for_rewrite (tree); -extern void unmark_all_for_rewrite (void); -extern bool marked_for_rewrite_p (tree); -extern bool any_marked_for_rewrite_p (void); -extern struct bitmap_head_def *marked_ssa_names (void); - - /* Return the (unique) IDENTIFIER_NODE node for a given name. The name is supplied as a char *. */ @@ -2894,6 +2901,7 @@ extern tree build_string (int, const char *); extern tree build_tree_list_stat (tree, tree MEM_STAT_DECL); #define build_tree_list(t,q) build_tree_list_stat(t,q MEM_STAT_INFO) extern tree build_decl_stat (enum tree_code, tree, tree MEM_STAT_DECL); +extern tree build_fn_decl (const char *, tree); #define build_decl(c,t,q) build_decl_stat (c,t,q MEM_STAT_INFO) extern tree build_block (tree, tree, tree, tree, tree); #ifndef USE_MAPPED_LOCATION @@ -3506,6 +3514,9 @@ extern void using_eh_for_cleanups (void); subexpressions are not changed. */ extern tree fold (tree); +extern tree fold_unary (enum tree_code, tree, tree); +extern tree fold_binary (enum tree_code, tree, tree, tree); +extern tree fold_ternary (enum tree_code, tree, tree, tree, tree); extern tree fold_build1 (enum tree_code, tree, tree); extern tree fold_build2 (enum tree_code, tree, tree, tree); extern tree fold_build3 (enum tree_code, tree, tree, tree, tree);