From: ebotcazou Date: Tue, 27 Apr 2010 17:56:52 +0000 (+0000) Subject: * tree.h: Fix truncated long macros. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=eb65426ae34d082127b3466ca80b78bebf704be6;p=thirdparty%2Fgcc.git * tree.h: Fix truncated long macros. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@158792 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index eba2adab7afc..e282e15d8f0c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2010-04-27 Eric Botcazou + + * tree.h: Fix truncated long macros. + 2010-04-27 Kai Tietz * collect2.c (TARGET_64BIT): Redefine to target's default. @@ -27,8 +31,8 @@ * opts.c (decode_options): Enable ipa-profile at -O1. * timevar.def (TV_IPA_PROFILE): Define. * common.opt (fipa-profile): Add. - * cgraph.c (cgraph_clone_node): Set local flag and clear vtable method flag - for clones. + * cgraph.c (cgraph_clone_node): Set local flag and clear vtable method + flag for clones. (cgraph_propagate_frequency): Handle only local ones. * tree-pass.h (pass_ipa_profile): Declare. * ipa-profile.c (gate_profile): Use flag_ipa_profile. diff --git a/gcc/tree.h b/gcc/tree.h index f73be797eefb..5aa994add19d 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -1419,7 +1419,8 @@ struct GTY(()) tree_real_cst { /* In a FIXED_CST node. */ struct fixed_value; -#define TREE_FIXED_CST_PTR(NODE) (FIXED_CST_CHECK (NODE)->fixed_cst.fixed_cst_ptr) +#define TREE_FIXED_CST_PTR(NODE) \ + (FIXED_CST_CHECK (NODE)->fixed_cst.fixed_cst_ptr) #define TREE_FIXED_CST(NODE) (*TREE_FIXED_CST_PTR (NODE)) struct GTY(()) tree_fixed_cst { @@ -1506,7 +1507,8 @@ struct GTY(()) tree_vec { #define CONSTRUCTOR_ELTS(NODE) (CONSTRUCTOR_CHECK (NODE)->constructor.elts) #define CONSTRUCTOR_ELT(NODE,IDX) \ (VEC_index (constructor_elt, CONSTRUCTOR_ELTS (NODE), IDX)) -#define CONSTRUCTOR_NELTS(NODE) (VEC_length (constructor_elt, CONSTRUCTOR_ELTS (NODE))) +#define CONSTRUCTOR_NELTS(NODE) \ + (VEC_length (constructor_elt, CONSTRUCTOR_ELTS (NODE))) /* Iterate through the vector V of CONSTRUCTOR_ELT elements, yielding the value of each element (stored within VAL). IX must be a scratch variable @@ -1587,7 +1589,8 @@ struct GTY(()) tree_constructor { /* The source location of this expression. Non-tree_exp nodes such as decls and constants can be shared among multiple locations, so return nothing. */ -#define EXPR_LOCATION(NODE) (EXPR_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION) +#define EXPR_LOCATION(NODE) \ + (EXPR_P ((NODE)) ? (NODE)->exp.locus : UNKNOWN_LOCATION) #define SET_EXPR_LOCATION(NODE, LOCUS) EXPR_CHECK ((NODE))->exp.locus = (LOCUS) #define EXPR_HAS_LOCATION(NODE) (EXPR_LOCATION (NODE) != UNKNOWN_LOCATION) #define EXPR_FILENAME(NODE) LOCATION_FILE (EXPR_CHECK ((NODE))->exp.locus) @@ -1882,7 +1885,7 @@ struct GTY(()) tree_exp { the very first reference to S in the function is a read operation. Default definitions are always created by an empty statement and belong to no basic block. */ -#define SSA_NAME_IS_DEFAULT_DEF(NODE) \ +#define SSA_NAME_IS_DEFAULT_DEF(NODE) \ SSA_NAME_CHECK (NODE)->base.default_def_flag /* Attributes for SSA_NAMEs for pointer-type variables. */ @@ -1975,9 +1978,12 @@ struct varray_head_tag; /* In a BLOCK node. */ #define BLOCK_VARS(NODE) (BLOCK_CHECK (NODE)->block.vars) -#define BLOCK_NONLOCALIZED_VARS(NODE) (BLOCK_CHECK (NODE)->block.nonlocalized_vars) -#define BLOCK_NUM_NONLOCALIZED_VARS(NODE) VEC_length (tree, BLOCK_NONLOCALIZED_VARS (NODE)) -#define BLOCK_NONLOCALIZED_VAR(NODE,N) VEC_index (tree, BLOCK_NONLOCALIZED_VARS (NODE), N) +#define BLOCK_NONLOCALIZED_VARS(NODE) \ + (BLOCK_CHECK (NODE)->block.nonlocalized_vars) +#define BLOCK_NUM_NONLOCALIZED_VARS(NODE) \ + VEC_length (tree, BLOCK_NONLOCALIZED_VARS (NODE)) +#define BLOCK_NONLOCALIZED_VAR(NODE,N) \ + VEC_index (tree, BLOCK_NONLOCALIZED_VARS (NODE), N) #define BLOCK_SUBBLOCKS(NODE) (BLOCK_CHECK (NODE)->block.subblocks) #define BLOCK_SUPERCONTEXT(NODE) (BLOCK_CHECK (NODE)->block.supercontext) /* Note: when changing this, make sure to find the places @@ -2118,7 +2124,8 @@ extern enum machine_mode vector_type_mode (const_tree); /* For a VECTOR_TYPE node, this describes a different type which is emitted in the debugging output. We use this to describe a vector as a structure containing an array. */ -#define TYPE_DEBUG_REPRESENTATION_TYPE(NODE) (VECTOR_TYPE_CHECK (NODE)->type.values) +#define TYPE_DEBUG_REPRESENTATION_TYPE(NODE) \ + (VECTOR_TYPE_CHECK (NODE)->type.values) /* For record and union types, information about this type, as a base type for itself. */ @@ -2504,18 +2511,23 @@ struct function; /* Every ..._DECL node gets a unique number that stays the same even when the decl is copied by the inliner once it is set. */ -#define DECL_PT_UID(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid == -1u ? (NODE)->decl_minimal.uid : (NODE)->decl_common.pt_uid) +#define DECL_PT_UID(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid == -1u \ + ? (NODE)->decl_minimal.uid : (NODE)->decl_common.pt_uid) /* Initialize the ..._DECL node pt-uid to the decls uid. */ -#define SET_DECL_PT_UID(NODE, UID) (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid = (UID)) +#define SET_DECL_PT_UID(NODE, UID) \ + (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid = (UID)) /* Whether the ..._DECL node pt-uid has been initialized and thus needs to be preserved when copyin the decl. */ -#define DECL_PT_UID_SET_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid != -1u) +#define DECL_PT_UID_SET_P(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.pt_uid != -1u) /* These two fields describe where in the source code the declaration was. If the declaration appears in several places (as for a C function that is declared first and then defined later), this information should refer to the definition. */ -#define DECL_SOURCE_LOCATION(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.locus) +#define DECL_SOURCE_LOCATION(NODE) \ + (DECL_MINIMAL_CHECK (NODE)->decl_minimal.locus) #define DECL_SOURCE_FILE(NODE) LOCATION_FILE (DECL_SOURCE_LOCATION (NODE)) #define DECL_SOURCE_LINE(NODE) LOCATION_LINE (DECL_SOURCE_LOCATION (NODE)) #define DECL_IS_BUILTIN(DECL) \ @@ -2529,7 +2541,8 @@ struct function; NULL_TREE or a TRANSLATION_UNIT_DECL if the given decl has "file scope". */ #define DECL_CONTEXT(NODE) (DECL_MINIMAL_CHECK (NODE)->decl_minimal.context) -#define DECL_FIELD_CONTEXT(NODE) (FIELD_DECL_CHECK (NODE)->decl_minimal.context) +#define DECL_FIELD_CONTEXT(NODE) \ + (FIELD_DECL_CHECK (NODE)->decl_minimal.context) struct GTY(()) tree_decl_minimal { struct tree_common common; location_t locus; @@ -2545,7 +2558,8 @@ struct GTY(()) tree_decl_minimal { The C front-end also uses this in a nested declaration of an inline function, to point back to the definition. */ -#define DECL_ABSTRACT_ORIGIN(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_origin) +#define DECL_ABSTRACT_ORIGIN(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.abstract_origin) /* Like DECL_ABSTRACT_ORIGIN, but returns NODE if there's no abstract origin. This is useful when setting the DECL_ABSTRACT_ORIGIN. */ @@ -2556,11 +2570,13 @@ struct GTY(()) tree_decl_minimal { inline instance of some original (abstract) decl from an inline function; suppress any warnings about shadowing some other variable. FUNCTION_DECL nodes can also have their abstract origin set to themselves. */ -#define DECL_FROM_INLINE(NODE) (DECL_ABSTRACT_ORIGIN (NODE) != NULL_TREE \ - && DECL_ABSTRACT_ORIGIN (NODE) != (NODE)) +#define DECL_FROM_INLINE(NODE) \ + (DECL_ABSTRACT_ORIGIN (NODE) != NULL_TREE \ + && DECL_ABSTRACT_ORIGIN (NODE) != (NODE)) /* In a DECL this is the field where attributes are stored. */ -#define DECL_ATTRIBUTES(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.attributes) +#define DECL_ATTRIBUTES(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.attributes) /* For a FUNCTION_DECL, holds the tree of BINDINGs. For a TRANSLATION_UNIT_DECL, holds the namespace's BLOCK. @@ -2585,7 +2601,8 @@ struct GTY(()) tree_decl_minimal { #define DECL_ALIGN_UNIT(NODE) (DECL_ALIGN (NODE) / BITS_PER_UNIT) /* Set if the alignment of this DECL has been set by the user, for example with an 'aligned' attribute. */ -#define DECL_USER_ALIGN(NODE) (DECL_COMMON_CHECK (NODE)->common.base.user_align) +#define DECL_USER_ALIGN(NODE) \ + (DECL_COMMON_CHECK (NODE)->common.base.user_align) /* Holds the machine mode corresponding to the declaration of a variable or field. Always equal to TYPE_MODE (TREE_TYPE (decl)) except for a FIELD_DECL. */ @@ -2606,7 +2623,8 @@ struct GTY(()) tree_decl_minimal { /* Nonzero for a given ..._DECL node means that the name of this node should be ignored for symbolic debug purposes. Moreover, for a FUNCTION_DECL, the body of the function should also be ignored. */ -#define DECL_IGNORED_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag) +#define DECL_IGNORED_P(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.ignored_flag) /* Nonzero for a given ..._DECL node means that this node represents an "abstract instance" of the given declaration (e.g. in the original @@ -2614,10 +2632,12 @@ struct GTY(()) tree_decl_minimal { information, we mustn't try to generate any address information for nodes marked as "abstract instances" because we don't actually generate any code or allocate any data space for such instances. */ -#define DECL_ABSTRACT(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.abstract_flag) +#define DECL_ABSTRACT(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.abstract_flag) /* Language-specific decl information. */ -#define DECL_LANG_SPECIFIC(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_specific) +#define DECL_LANG_SPECIFIC(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.lang_specific) /* In a VAR_DECL or FUNCTION_DECL, nonzero means external reference: do not allocate storage, and refer to a definition elsewhere. Note that @@ -2635,26 +2655,38 @@ struct GTY(()) tree_decl_minimal { Also set in some languages for variables, etc., outside the normal lexical scope, such as class instance variables. */ -#define DECL_NONLOCAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.nonlocal_flag) +#define DECL_NONLOCAL(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.nonlocal_flag) /* Used in VAR_DECLs to indicate that the variable is a vtable. Used in FIELD_DECLs for vtable pointers. Used in FUNCTION_DECLs to indicate that the function is virtual. */ -#define DECL_VIRTUAL_P(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.virtual_flag) +#define DECL_VIRTUAL_P(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.virtual_flag) /* Used to indicate that this DECL represents a compiler-generated entity. */ -#define DECL_ARTIFICIAL(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.artificial_flag) +#define DECL_ARTIFICIAL(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.artificial_flag) /* Additional flags for language-specific uses. */ -#define DECL_LANG_FLAG_0(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_0) -#define DECL_LANG_FLAG_1(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_1) -#define DECL_LANG_FLAG_2(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_2) -#define DECL_LANG_FLAG_3(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_3) -#define DECL_LANG_FLAG_4(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_4) -#define DECL_LANG_FLAG_5(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_5) -#define DECL_LANG_FLAG_6(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_6) -#define DECL_LANG_FLAG_7(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_7) -#define DECL_LANG_FLAG_8(NODE) (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_8) +#define DECL_LANG_FLAG_0(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_0) +#define DECL_LANG_FLAG_1(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_1) +#define DECL_LANG_FLAG_2(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_2) +#define DECL_LANG_FLAG_3(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_3) +#define DECL_LANG_FLAG_4(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_4) +#define DECL_LANG_FLAG_5(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_5) +#define DECL_LANG_FLAG_6(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_6) +#define DECL_LANG_FLAG_7(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_7) +#define DECL_LANG_FLAG_8(NODE) \ + (DECL_COMMON_CHECK (NODE)->decl_common.lang_flag_8) /* Nonzero for a decl which is at file scope. */ #define DECL_FILE_SCOPE_P(EXP) \ @@ -2755,7 +2787,7 @@ extern void decl_value_expr_insert (tree, tree); (TREE_CHECK2 (NODE, VAR_DECL, PARM_DECL)->decl_common.decl_flag_2) #define DECL_VALUE_EXPR(NODE) \ (decl_value_expr_lookup (DECL_WRTL_CHECK (NODE))) -#define SET_DECL_VALUE_EXPR(NODE, VAL) \ +#define SET_DECL_VALUE_EXPR(NODE, VAL) \ (decl_value_expr_insert (DECL_WRTL_CHECK (NODE), VAL)) /* Holds the RTL expression for the value of a variable or function. @@ -2773,12 +2805,14 @@ extern void decl_value_expr_insert (tree, tree); #define HAS_RTL_P(NODE) (CODE_CONTAINS_STRUCT (TREE_CODE (NODE), TS_DECL_WRTL)) /* Returns nonzero if the DECL_RTL for NODE has already been set. */ -#define DECL_RTL_SET_P(NODE) (HAS_RTL_P (NODE) && DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl != NULL) +#define DECL_RTL_SET_P(NODE) \ + (HAS_RTL_P (NODE) && DECL_WRTL_CHECK (NODE)->decl_with_rtl.rtl != NULL) /* Copy the RTL from NODE1 to NODE2. If the RTL was not set for NODE1, it will not be set for NODE2; this is a lazy copy. */ #define COPY_DECL_RTL(NODE1, NODE2) \ - (DECL_WRTL_CHECK (NODE2)->decl_with_rtl.rtl = DECL_WRTL_CHECK (NODE1)->decl_with_rtl.rtl) + (DECL_WRTL_CHECK (NODE2)->decl_with_rtl.rtl \ + = DECL_WRTL_CHECK (NODE1)->decl_with_rtl.rtl) /* The DECL_RTL for NODE, if it is set, or NULL, if it is not set. */ #define DECL_RTL_IF_SET(NODE) (DECL_RTL_SET_P (NODE) ? DECL_RTL (NODE) : NULL) @@ -2800,12 +2834,14 @@ struct GTY(()) tree_decl_with_rtl { field from DECL_FIELD_OFFSET. This field may be nonzero even for fields that are not bit fields (since DECL_OFFSET_ALIGN may be larger than the natural alignment of the field's type). */ -#define DECL_FIELD_BIT_OFFSET(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_offset) +#define DECL_FIELD_BIT_OFFSET(NODE) \ + (FIELD_DECL_CHECK (NODE)->field_decl.bit_offset) /* In a FIELD_DECL, this indicates whether the field was a bit-field and if so, the type that was originally specified for it. TREE_TYPE may have been modified (in finish_struct). */ -#define DECL_BIT_FIELD_TYPE(NODE) (FIELD_DECL_CHECK (NODE)->field_decl.bit_field_type) +#define DECL_BIT_FIELD_TYPE(NODE) \ + (FIELD_DECL_CHECK (NODE)->field_decl.bit_field_type) /* For a FIELD_DECL in a QUAL_UNION_TYPE, records the expression, which if nonzero, indicates that the field occupies the type. */ @@ -2902,7 +2938,8 @@ struct GTY(()) tree_const_decl { /* For PARM_DECL, holds an RTL for the stack slot or register where the data was actually passed. */ -#define DECL_INCOMING_RTL(NODE) (PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl) +#define DECL_INCOMING_RTL(NODE) \ + (PARM_DECL_CHECK (NODE)->parm_decl.incoming_rtl) struct GTY(()) tree_parm_decl { struct tree_decl_with_rtl common; @@ -2911,25 +2948,38 @@ struct GTY(()) tree_parm_decl { }; -/* Nonzero in a decl means that the gimplifier has seen (or placed) - this variable in a BIND_EXPR. */ -#define DECL_SEEN_IN_BIND_EXPR_P(NODE) \ - (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.seen_in_bind_expr) - -/* Used to indicate that the linkage status of this DECL is not yet known, - so it should not be output now. */ -#define DECL_DEFER_OUTPUT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.defer_output) - /* Nonzero for a given ..._DECL node means that no warnings should be generated just because this node is unused. */ #define DECL_IN_SYSTEM_HEADER(NODE) \ (in_system_header_at (DECL_SOURCE_LOCATION (NODE))) +/* Used to indicate that the linkage status of this DECL is not yet known, + so it should not be output now. */ +#define DECL_DEFER_OUTPUT(NODE) \ + (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.defer_output) + +/* In a VAR_DECL that's static, + nonzero if the space is in the text section. */ +#define DECL_IN_TEXT_SECTION(NODE) \ + (VAR_DECL_CHECK (NODE)->decl_with_vis.in_text_section) + +/* Nonzero for a given ..._DECL node means that this node should be + put in .common, if possible. If a DECL_INITIAL is given, and it + is not error_mark_node, then the decl cannot be put in .common. */ +#define DECL_COMMON(NODE) \ + (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.common_flag) + +/* In a VAR_DECL, nonzero if the decl is a register variable with + an explicit asm specification. */ +#define DECL_HARD_REGISTER(NODE) \ + (VAR_DECL_CHECK (NODE)->decl_with_vis.hard_register) + /* Used to indicate that this DECL has weak linkage. */ #define DECL_WEAK(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.weak_flag) /* Used to indicate that the DECL is a dllimport. */ -#define DECL_DLLIMPORT_P(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.dllimport_flag) +#define DECL_DLLIMPORT_P(NODE) \ + (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.dllimport_flag) /* 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. @@ -2940,9 +2990,15 @@ struct GTY(()) tree_parm_decl { back-end; it is up to front-ends which set this flag to ensure that there will never be any harm, other than bloat, in putting out something which is DECL_COMDAT. */ -#define DECL_COMDAT(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_flag) +#define DECL_COMDAT(NODE) \ + (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_flag) -#define DECL_COMDAT_GROUP(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_group) +#define DECL_COMDAT_GROUP(NODE) \ + (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.comdat_group) + +/* Used in TREE_PUBLIC decls to indicate that copies of this DECL in + multiple translation units should be merged. */ +#define DECL_ONE_ONLY(NODE) (DECL_COMDAT_GROUP (NODE) != NULL_TREE) /* A replaceable function is one which may be replaced at link-time with an entirely different definition, provided that the @@ -2978,7 +3034,8 @@ struct GTY(()) tree_parm_decl { the NODE might still have a DECL_ASSEMBLER_NAME -- it just hasn't been set yet. */ #define DECL_ASSEMBLER_NAME_SET_P(NODE) \ - (HAS_DECL_ASSEMBLER_NAME_P (NODE) && DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name != NULL_TREE) + (HAS_DECL_ASSEMBLER_NAME_P (NODE) \ + && DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.assembler_name != NULL_TREE) /* Set the DECL_ASSEMBLER_NAME for NODE to NAME. */ #define SET_DECL_ASSEMBLER_NAME(NODE, NAME) \ @@ -3001,18 +3058,37 @@ struct GTY(()) tree_parm_decl { /* Records the section name in a section attribute. Used to pass the name from decl_attributes to make_function_rtl and make_decl_rtl. */ -#define DECL_SECTION_NAME(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.section_name) +#define DECL_SECTION_NAME(NODE) \ + (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.section_name) + +/* Nonzero in a decl means that the gimplifier has seen (or placed) + this variable in a BIND_EXPR. */ +#define DECL_SEEN_IN_BIND_EXPR_P(NODE) \ + (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.seen_in_bind_expr) /* Value of the decls's visibility attribute */ -#define DECL_VISIBILITY(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility) +#define DECL_VISIBILITY(NODE) \ + (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility) /* Nonzero means that the decl had its visibility specified rather than being inferred. */ -#define DECL_VISIBILITY_SPECIFIED(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility_specified) +#define DECL_VISIBILITY_SPECIFIED(NODE) \ + (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.visibility_specified) -/* Used in TREE_PUBLIC decls to indicate that copies of this DECL in - multiple translation units should be merged. */ -#define DECL_ONE_ONLY(NODE) (DECL_COMDAT_GROUP (NODE) != NULL_TREE) +/* In a VAR_DECL, the model to use if the data should be allocated from + thread-local storage. */ +#define DECL_TLS_MODEL(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model) + +/* In a VAR_DECL, nonzero if the data should be allocated from + thread-local storage. */ +#define DECL_THREAD_LOCAL_P(NODE) \ + (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model >= TLS_MODEL_REAL) + +/* In a non-local VAR_DECL with static storage duration, true if the + variable has an initialization priority. If false, the variable + will be initialized at the DEFAULT_INIT_PRIORITY. */ +#define DECL_HAS_INIT_PRIORITY_P(NODE) \ + (VAR_DECL_CHECK (NODE)->decl_with_vis.init_priority_p) struct GTY(()) tree_decl_with_vis { struct tree_decl_with_rtl common; @@ -3044,19 +3120,6 @@ struct GTY(()) tree_decl_with_vis { /* 15 unused bits. */ }; -/* In a VAR_DECL that's static, - nonzero if the space is in the text section. */ -#define DECL_IN_TEXT_SECTION(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.in_text_section) - -/* Nonzero for a given ..._DECL node means that this node should be - put in .common, if possible. If a DECL_INITIAL is given, and it - is not error_mark_node, then the decl cannot be put in .common. */ -#define DECL_COMMON(NODE) (DECL_WITH_VIS_CHECK (NODE)->decl_with_vis.common_flag) - -/* In a VAR_DECL, nonzero if the decl is a register variable with - an explicit asm specification. */ -#define DECL_HARD_REGISTER(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.hard_register) - extern tree decl_debug_expr_lookup (tree); extern void decl_debug_expr_insert (tree, tree); /* For VAR_DECL, this is set to either an expression that it was split @@ -3076,12 +3139,6 @@ extern priority_type decl_fini_priority_lookup (tree); extern void decl_init_priority_insert (tree, priority_type); extern void decl_fini_priority_insert (tree, priority_type); -/* In a non-local VAR_DECL with static storage duration, true if the - variable has an initialization priority. If false, the variable - will be initialized at the DEFAULT_INIT_PRIORITY. */ -#define DECL_HAS_INIT_PRIORITY_P(NODE) \ - (VAR_DECL_CHECK (NODE)->decl_with_vis.init_priority_p) - /* For a VAR_DECL or FUNCTION_DECL the initialization priority of NODE. */ #define DECL_INIT_PRIORITY(NODE) \ @@ -3108,15 +3165,6 @@ extern void decl_fini_priority_insert (tree, priority_type); libraries. */ #define MAX_RESERVED_INIT_PRIORITY 100 -/* In a VAR_DECL, the model to use if the data should be allocated from - thread-local storage. */ -#define DECL_TLS_MODEL(NODE) (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model) - -/* In a VAR_DECL, nonzero if the data should be allocated from - thread-local storage. */ -#define DECL_THREAD_LOCAL_P(NODE) \ - (VAR_DECL_CHECK (NODE)->decl_with_vis.tls_model >= TLS_MODEL_REAL) - #define DECL_VAR_ANN_PTR(NODE) \ (TREE_CODE (NODE) == VAR_DECL ? &(NODE)->var_decl.ann \ : TREE_CODE (NODE) == PARM_DECL ? &(NODE)->parm_decl.ann \ @@ -3131,7 +3179,8 @@ struct GTY(()) tree_var_decl { /* This field is used to reference anything in decl.result and is meant only for use by the garbage collector. */ -#define DECL_RESULT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.result) +#define DECL_RESULT_FLD(NODE) \ + (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.result) /* The DECL_VINDEX is used for FUNCTION_DECLS in two different ways. Before the struct containing the FUNCTION_DECL is laid out, @@ -3141,7 +3190,8 @@ struct GTY(()) tree_var_decl { to an INTEGER_CST node which is suitable for use as an index into the virtual function table. C++ also uses this field in namespaces, hence the DECL_NON_COMMON_CHECK. */ -#define DECL_VINDEX(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.vindex) +#define DECL_VINDEX(NODE) \ + (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.vindex) struct GTY(()) tree_decl_non_common { @@ -3160,16 +3210,19 @@ struct GTY(()) #define DECL_RESULT(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.result) /* In a FUNCTION_DECL, nonzero if the function cannot be inlined. */ -#define DECL_UNINLINABLE(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.uninlinable) +#define DECL_UNINLINABLE(NODE) \ + (FUNCTION_DECL_CHECK (NODE)->function_decl.uninlinable) /* In a FUNCTION_DECL, the saved representation of the body of the entire function. */ -#define DECL_SAVED_TREE(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.saved_tree) +#define DECL_SAVED_TREE(NODE) \ + (FUNCTION_DECL_CHECK (NODE)->decl_non_common.saved_tree) /* Nonzero in a FUNCTION_DECL means this function should be treated as if it were a malloc, meaning it returns a pointer that is not an alias. */ -#define DECL_IS_MALLOC(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.malloc_flag) +#define DECL_IS_MALLOC(NODE) \ + (FUNCTION_DECL_CHECK (NODE)->function_decl.malloc_flag) /* Nonzero in a FUNCTION_DECL means this function should be treated as C++ operator new, meaning that it returns a pointer for which we @@ -3198,7 +3251,8 @@ struct GTY(()) /* Nonzero in a FUNCTION_DECL means this function should be treated as "novops" function (function that does not read global memory, but may have arbitrary side effects). */ -#define DECL_IS_NOVOPS(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.novops_flag) +#define DECL_IS_NOVOPS(NODE) \ + (FUNCTION_DECL_CHECK (NODE)->function_decl.novops_flag) /* Used in FUNCTION_DECLs to indicate that they should be run automatically at the beginning or end of execution. */ @@ -3248,7 +3302,8 @@ struct GTY(()) /* For FUNCTION_DECL, this holds a pointer to a structure ("struct function") that describes the status of this function. */ -#define DECL_STRUCT_FUNCTION(NODE) (FUNCTION_DECL_CHECK (NODE)->function_decl.f) +#define DECL_STRUCT_FUNCTION(NODE) \ + (FUNCTION_DECL_CHECK (NODE)->function_decl.f) /* In a FUNCTION_DECL, nonzero means a built in function. */ #define DECL_BUILT_IN(NODE) (DECL_BUILT_IN_CLASS (NODE) != NOT_BUILT_IN) @@ -3260,8 +3315,10 @@ struct GTY(()) /* In FUNCTION_DECL, a chain of ..._DECL nodes. VAR_DECL and PARM_DECL reserve the arguments slot for language-specific uses. */ -#define DECL_ARGUMENTS(NODE) (FUNCTION_DECL_CHECK (NODE)->decl_non_common.arguments) -#define DECL_ARGUMENT_FLD(NODE) (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.arguments) +#define DECL_ARGUMENTS(NODE) \ + (FUNCTION_DECL_CHECK (NODE)->decl_non_common.arguments) +#define DECL_ARGUMENT_FLD(NODE) \ + (DECL_NON_COMMON_CHECK (NODE)->decl_non_common.arguments) /* In FUNCTION_DECL, the function specific target options to use when compiling this function. */ @@ -3321,7 +3378,8 @@ struct GTY(()) tree_function_decl { }; /* For a TYPE_DECL, holds the "original" type. (TREE_TYPE has the copy.) */ -#define DECL_ORIGINAL_TYPE(NODE) (TYPE_DECL_CHECK (NODE)->decl_non_common.result) +#define DECL_ORIGINAL_TYPE(NODE) \ + (TYPE_DECL_CHECK (NODE)->decl_non_common.result) /* In a TYPE_DECL nonzero means the detail info about this type is not dumped into stabs. Instead it will generate cross reference ('x') of names. @@ -3755,7 +3813,8 @@ extern GTY(()) tree global_trees[TI_MAX]; #define void_list_node global_trees[TI_VOID_LIST_NODE] #define main_identifier_node global_trees[TI_MAIN_IDENTIFIER] -#define MAIN_NAME_P(NODE) (IDENTIFIER_NODE_CHECK (NODE) == main_identifier_node) +#define MAIN_NAME_P(NODE) \ + (IDENTIFIER_NODE_CHECK (NODE) == main_identifier_node) /* Optimization options (OPTIMIZATION_NODE) to use for default and current functions. */ @@ -5125,6 +5184,7 @@ extern void internal_reference_types (void); extern unsigned int update_alignment_for_field (record_layout_info, tree, unsigned int); /* varasm.c */ +extern tree tree_output_constant_def (tree); extern void make_decl_rtl (tree); extern rtx make_decl_rtl_for_debug (tree); extern void make_decl_one_only (tree, tree);