X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Ftree.h;h=f54f6d34977f39509b118209df100d8d12531dd9;hb=25c41c32d7afed5c728fed06f34bb0b26a3f4f9a;hp=b6b637af9d5a2d9020a64e2debaa676af5d82283;hpb=71d8992864cbd54ab5e02d6c946ce8822cee6882;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/tree.h b/gcc/tree.h index b6b637af9d5..f54f6d34977 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -2199,12 +2199,11 @@ struct tree_decl_common GTY(()) /* In LABEL_DECL, this is DECL_ERROR_ISSUED. In VAR_DECL and PARM_DECL, this is DECL_REGISTER. */ unsigned decl_flag_0 : 1; - /* In FIELD_DECL, this is DECL_PACKED - In PARM_DECL, this is DECL_TRANSPARENT_UNION. */ + /* In FIELD_DECL, this is DECL_PACKED. */ unsigned decl_flag_1 : 1; /* In FIELD_DECL, this is DECL_BIT_FIELD In VAR_DECL and FUNCTION_DECL, this is DECL_EXTERNAL. - In TYPE_DECL, this is TYPE_DECL_SUPRESS_DEBUG*/ + In TYPE_DECL, this is TYPE_DECL_SUPRESS_DEBUG. */ unsigned decl_flag_2 : 1; /* In FIELD_DECL, this is DECL_NONADDRESSABLE_P In VAR_DECL and PARM_DECL, this is DECL_HAS_VALUE_EXPR. */ @@ -2386,12 +2385,6 @@ struct tree_const_decl GTY(()) where the data was actually passed. */ #define DECL_INCOMING_RTL(NODE) (PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl) -/* Used in PARM_DECLs whose type are unions to indicate that the - argument should be passed in the same way that the first union - alternative would be passed. */ -#define DECL_TRANSPARENT_UNION(NODE) \ - (PARM_DECL_CHECK (NODE)->decl_common.decl_flag_1) - struct tree_parm_decl GTY(()) { struct tree_decl_with_rtl common; @@ -2421,10 +2414,23 @@ struct tree_parm_decl GTY(()) #define DECL_GIMPLE_FORMAL_TEMP_P(DECL) \ DECL_WITH_VIS_CHECK (DECL)->decl_with_vis.gimple_formal_temp -/* Used to indicate that the pointer to this DECL cannot be treated as - an address constant. */ -#define DECL_NON_ADDR_CONST_P(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.non_addr_const_p) +/* Used to indicate that the DECL is a dllimport. */ +#define DECL_DLLIMPORT_P(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.dllimport_flag) + +/* DECL_BASED_ON_RESTRICT_P records whether a VAR_DECL is a temporary + based on a variable with a restrict qualified type. If it is, + DECL_RESTRICT_BASE returns the restrict qualified variable on which + it is based. */ + +#define DECL_BASED_ON_RESTRICT_P(NODE) \ + (VAR_DECL_CHECK (NODE)->decl_with_vis.based_on_restrict_p) +#define DECL_GET_RESTRICT_BASE(NODE) \ + (decl_restrict_base_lookup (VAR_DECL_CHECK (NODE))) +#define SET_DECL_RESTRICT_BASE(NODE, VAL) \ + (decl_restrict_base_insert (VAR_DECL_CHECK (NODE), (VAL))) +extern tree decl_restrict_base_lookup (tree); +extern void decl_restrict_base_insert (tree, tree); /* Used in a DECL to indicate that, even if it TREE_PUBLIC, it need not be put out unless it is needed in this translation unit. @@ -2500,7 +2506,8 @@ struct tree_decl_with_vis GTY(()) unsigned common_flag:1; unsigned in_text_section : 1; unsigned gimple_formal_temp : 1; - unsigned non_addr_const_p : 1; + unsigned dllimport_flag : 1; + unsigned based_on_restrict_p : 1; /* Used by C++. Might become a generic decl flag. */ unsigned shadowed_for_var_p : 1; @@ -2517,7 +2524,7 @@ struct tree_decl_with_vis GTY(()) /* Belongs to VAR_DECL exclusively. */ ENUM_BITFIELD(tls_model) tls_model : 3; - /* 13 unused bits. */ + /* 11 unused bits. */ }; /* In a VAR_DECL that's static, @@ -3036,7 +3043,6 @@ enum ptrmemfunc_vbit_where_t #define NULL_TREE (tree) NULL -extern GTY(()) tree frame_base_decl; extern tree decl_assembler_name (tree); /* Compute the number of bytes occupied by 'node'. This routine only @@ -3555,7 +3561,7 @@ extern bool initializer_zerop (tree); extern void categorize_ctor_elements (tree, HOST_WIDE_INT *, HOST_WIDE_INT *, HOST_WIDE_INT *, bool *); -extern HOST_WIDE_INT count_type_elements (tree); +extern HOST_WIDE_INT count_type_elements (tree, bool); /* add_var_to_bind_expr (bind_expr, var) binds var to bind_expr. */ @@ -3789,10 +3795,15 @@ 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); -extern tree fold_initializer (tree); +extern tree fold_build1_stat (enum tree_code, tree, tree MEM_STAT_DECL); +#define fold_build1(c,t1,t2) fold_build1_stat (c, t1, t2 MEM_STAT_INFO) +extern tree fold_build2_stat (enum tree_code, tree, tree, tree MEM_STAT_DECL); +#define fold_build2(c,t1,t2,t3) fold_build2_stat (c, t1, t2, t3 MEM_STAT_INFO) +extern tree fold_build3_stat (enum tree_code, tree, tree, tree, tree MEM_STAT_DECL); +#define fold_build3(c,t1,t2,t3,t4) fold_build3_stat (c, t1, t2, t3, t4 MEM_STAT_INFO) +extern tree fold_build1_initializer (enum tree_code, tree, tree); +extern tree fold_build2_initializer (enum tree_code, tree, tree, tree); +extern tree fold_build3_initializer (enum tree_code, tree, tree, tree, tree); extern tree fold_convert (tree, tree); extern tree fold_single_bit_test (enum tree_code, tree, tree, tree); extern tree fold_ignored_result (tree); @@ -3853,6 +3864,7 @@ extern tree constant_boolean_node (int, tree); extern tree build_low_bits_mask (tree, unsigned); extern bool tree_swap_operands_p (tree, tree, bool); +extern void swap_tree_operands (tree, tree *, tree *); extern enum tree_code swap_tree_comparison (enum tree_code); extern bool ptr_difference_const (tree, tree, HOST_WIDE_INT *); @@ -3970,6 +3982,7 @@ extern bool debug_find_tree (tree, tree); /* This is in tree-inline.c since the routine uses data structures from the inliner. */ extern tree unsave_expr_now (tree); +extern tree build_duplicate_type (tree); /* In emit-rtl.c */ extern rtx emit_line_note (location_t);